windows – 如何为非Qt应用程序创建Qt共享库
发布时间:2020-07-16 10:54:49  所属栏目: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共享库. (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
相关内容
- 【问题】no libsigar-amd64-winnt.dll in java.library.pat
 - windows – 如何为非Qt应用程序创建Qt共享库
 - xaml – Windows 8 App,更改BackButtonStyle的颜色
 - 如何将windows自带的简化版OneNote卸载?
 - windows – dokan sshfs有多稳定?
 - windows下编译mxnet并使用C++训练模型
 - jboss7.x – 无法登录到windows上的jboss 7.1管理控制台
 - .net – Windows身份验证的简单索赔转换和缓存
 - windows – 如何通过apt-cyg安装cygwin / X
 - .net – System.Diagnostics.EventLog – 连接到系统的设备
 
