ctk加载插件「建议收藏」

ctk加载插件「建议收藏」用ctk加载插件有两种方法,第一种需要自己创建ctkPluginFramework://ctkpluginctkPluginFrameworkFactory*ctkFrameWorkFactory=newctkPluginFrameworkFactory;QSharedPointerframework=ctkFrameWorkFactory->getFram

大家好,又见面了,我是你们的朋友全栈君。

用ctk加载插件有两种方法,第一种需要自己创建ctkPluginFramework:

//ctk plugin
    ctkPluginFrameworkFactory* ctkFrameWorkFactory = new ctkPluginFrameworkFactory;
    QSharedPointer<ctkPluginFramework> framework = ctkFrameWorkFactory->getFramework();

    try
    {
        framework->init();

        framework->start();

        qDebug() << "[Info] ctkPluginFramework start ...";
    }
    catch (const ctkPluginException &Exception)
    {
        qDebug() << QObject::tr("Failed to initialize the plug-in framework: ") << Exception.what();
        return 1;
    }


    //install plugin
    ctkPluginContext* pluginContext = framework->getPluginContext();
    QSharedPointer<ctkPlugin> Plugin = pluginContext->installPlugin(QUrl::fromLocalFile("。。/liborg_ctk_example.dll"));
    Plugin->start(ctkPlugin::START_TRANSIENT);

还有一种比较简单的利用ctkPluginFrameworkLauncher

 ctkPluginFrameworkLauncher::addSearchPath(path, true); //添加插件的搜索路径
	bool SUCCEEDED;
	try
	{
		SUCCEEDED = ctkPluginFrameworkLauncher::start(pluginSymbolicName);   //pluginSybolName为插件的符号名,比如在MF文件中的 Plugin-SymbolicName: org.ctk.example,这里就是“org.ctk.example”
	}

	catch (ctkPluginException &e)
	{
		std::cout << "Error in " << pluginSymbolicName << " " << e.message().toStdString() << std::endl;
		const ctkException* e2 = e.cause();

		if (e2)
			std::cout << e2->message().toStdString() << std::endl;
		return LOAD_FAILED;
	}

	catch (ctkRuntimeException &e)
	{
		std::cout << "Error in " << pluginSymbolicName << " " << e.what() << std::endl;
		const ctkException* e2 = e.cause();

		if (e2)
			std::cout << e2->message().toStdString() << std::endl;
		return LOAD_FAILED;
	}
	catch (...)
	{
		std::cout << "Error in " << pluginSymbolicName << std::endl;
		return UNKNOW_EXCEPTION;
	}

获取pluginContext用下面方法

 ctkPluginFrameworkLauncher::getPluginContext()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134812.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab画柱状图并填充斜线_matlab画柱状图分两类

    matlab画柱状图并填充斜线_matlab画柱状图分两类导读:记录一下如何使用matlab画柱状图,并进行填充。版本:matlab2017b.注意:使用matlab2016版本似乎会有bug。1.辅助函数makehatch.mfunctionA=makehatch(hatch)%MAKEHATCHPredefinedhatchpatterns%MAKEHATCH(HATCH)returnsamatrix…

    2022年10月19日
    3
  • app测试常用工具(最常用的软件测试工具)

    随着移动互联网的高速发展,App应用非常火,测试工程师也会接触到各种app应用。除了人工测试之外,也可以通过一些测试工具来提高我们的测试效率,以下对于我用过或听过的app测试工具做了一个统一整理,欢迎补充。一、APP自动化测试工具Appium官网:http://appium.io/GitHub地址:https://github.com/appium/appium介绍:Appium是一个开源的、跨平台的自动化测试工具。支持自动化iOS,Android和Window

    2022年4月15日
    70
  • 阿里矢量图标_ui矢量图

    阿里矢量图标_ui矢量图阿里iconfunt官网对于图标的调用写的不够详细,许多初用者不会用,下面具体介绍下总结的两种方法:一、在线调用方式1、首先建立新浪微博账号,用微博号登录iconfunt官网;2、所需要图标加入

    2022年8月1日
    9
  • 菜鸟的数学建模之路(四):BP神经网络

    个人理解BP神经网络属于人工智能范畴,在我看来它更多的是一个用于预测的工具,尽管它的用处还不仅于此。在数学建模上,很多时候,题目提供了很多历史数据,我经常用这些历史数据,用BP神经网络训练它,利用训练好的BP神经网络,来预测接下来的未知的值。BP神经网络关于该神经网络的繁多的理论这里就不去深究了,百度一查一大把,一堆的理论反正我是看不下去的,所以这里只是讲如何把BP神经网络当成一个工具来用,…

    2022年4月9日
    61
  • 211高校导师解散微信群直言:和你们没感情,江湖不见!校方回应

    211高校导师解散微信群直言:和你们没感情,江湖不见!校方回应来源丨爆炸吧知识近日,哈尔滨工程大学一教授把他指导的63名学生的微信群就地解散了,解散群之前,他还在群里表示“和你们没有感情,永远不想和你们打交道,也不要找我问学科问题,江湖不见”。随后,…

    2022年5月19日
    63
  • Android P Preview1 兼容要点[通俗易懂]

    AndroidPPreview1,昨天3.8发布,兼容Preview1主要改下targetSdkVersion=28compileSdkVersion为前一个版本(比如27)在AndroidStudio3.2下能完整支持AndroidPPreview1AndroidPPreview1要点1.1约束调用非API接口:比如用JNI、反射来调用一下系统类、方法    Android…

    2022年4月15日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号