【问题标题】:Is there a way to package a dynamic library in the application binary?有没有办法在应用程序二进制文件中打包动态库?
【发布时间】:2009-11-06 18:10:13
【问题描述】:

您好,我正在开发一个使用插件(动态库)的 Qt 应用程序,我想知道是否有一种方法可以在一个文件中构建应用程序和库(也许使用 QResource 功能?)

【问题讨论】:

    标签: qt dll


    【解决方案1】:

    Qt 支持将插件静态链接到您的应用程序。见the documentation

    您在代码中使用 Q_IMPORT_PLUGIN() 宏,如下所示:

    #include <QApplication>
    #include <QtPlugin>
    
    Q_IMPORT_PLUGIN(qjpeg)
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        ...
        return app.exec();
    }
    

    您还需要在 .pro 文件中列出 QTPLUGIN 中的插件:

    QTPLUGIN += qjpeg
    

    您可能还需要自己构建 Qt 的静态版本 - 不确定预构建版本是否包含静态库(我不使用预构建代码)。

    【讨论】:

      【解决方案2】:

      您需要一个像“DLL to Lib”这样的应用程序,它将您的 DLL 文件转换为静态库。然后,您将使用 .lib 文件而不是 DLL 进行链接,一切就绪。您可以在此处下载一个产品的试用版:

      http://www.binary-soft.com/download.htm

      【讨论】:

        【解决方案3】:

        执行此操作时,请确保不要违反库的许可。如果该库不能作为静态库使用,则它可能位于 LGPL(甚至 GPL)之下。在任何一种情况下静态链接都会违反许可证,除非您也在 GPL 下发布您的软件。

        【讨论】:

          猜你喜欢
          • 2017-02-16
          • 2015-12-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-09
          • 1970-01-01
          • 2011-03-07
          相关资源
          最近更新 更多