windows – 如何为非Qt应用程序创建Qt共享库
发布时间:2020-07-16 10:34:43 所属栏目:Windows 来源:互联网
导读:我开发了一个具有Qt共享库和Qt应用程序的应用程序. Qt共享库导出单个类,其中包含很少的信号.我为此使用了Q_DECL_EXPORT / Q_DECL_IMPORT宏.现在,dll和应用程序之间的通信是通过Qt信号和插槽进行的,需要使用QObject开发应用程序. 现在我被要求将Qt共享库作为理
我开发了一个具有Qt共享库和Qt应用程序的应用程序. Qt共享库导出单个类,其中包含很少的信号.我为此使用了Q_DECL_EXPORT / Q_DECL_IMPORT宏.现在,dll和应用程序之间的通信是通过Qt信号和插槽进行的,需要使用QObject开发应用程序. 现在我被要求将Qt共享库作为理想的DLL,其中客户端应用程序不依赖于Qt框架. 我看到以下帖子但是Using a Qt-based DLL in a non-Qt application但不确定这是否是最好的方法. 请问有人可以选择开发用于非Qt应用程序的Qt共享库. 您可以在库中的新线程中创建QCoreApplication的实例.你应该检查只创建它的一个实例,那是因为每个Qt应用程序应该只包含一个QCoreApplication.所以你的图书馆可以像: class Q_DECL_EXPORT SharedLibrary :public QObject { Q_OBJECT public: SharedLibrary(); private slots: void onStarted(); private: static int argc = 1; static char * argv[] = {"SharedLibrary",NULL}; static QCoreApplication * app = NULL; static QThread * thread = NULL; }; SharedLibrary::SharedLibrary() { if (thread == NULL) { thread = new QThread(); connect(thread,SIGNAL(started()),this,SLOT(onStarted()),Qt::DirectConnection); thread->start(); } } SharedLibrary::onStarted() { if (QCoreApplication::instance() == NULL) { app = new QCoreApplication(argc,argv); app->exec(); } } 这样,即使在非Qt应用程序中,您也可以使用Qt共享库. (编辑:大庆站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows下RabbitMQ安装,部署,配置
- IE11 For Win7、win2008中文版官方下载地址
- windows 10环境下安装Tesseract-OCR与python集成
- 无法加载Microsoft.WindowsAzure.ServiceRuntime,Version =
- Windows Vista 64位的命令行subversion客户端
- 窗口 – 双击时暂停批处理文件,但从控制台窗口运行时不会暂
- Windows Concole中的希腊字母
- 在Windows 10中,我们如何确定窗口所属的虚拟桌面?
- NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
- Windows Phone 7 – Windows Phone开发Visual Studio 2012
推荐文章
站长推荐
热点阅读