首页 > 学院 > 开发设计 > 正文

ctk加载插件

2019-11-08 19:35:52
字体:
来源:转载
供稿:网友

用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()


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表