我的应用程序可以加载插件。插件可以使用主要可执行文件中的符号。MacOS X - 编译插件
它是用C++编写的Qt。我正在使用qmake来构建它。
在Linux下有一个弱链接,它允许编译和链接我的插件而不满足所有符号依赖关系(无论如何将由运行时加载应用程序提供)。
Windows需要满足所有符号。我通过-Wl,--export-all-symbols,--out-implib,libMyApp.a
的帮助,设法用mingw32来做到这一点,它在链接插件时产生一个链接器使用的可执行文件中的符号表。
现在我遇到了MacOS X的一个问题,我不知道如何处理它。我在苹果的帮助here发现我应该编译我的插件不与-dynamiclib
,但我应该使用-bundle -bundle_loader MyApp
。问题是,qmake的力量-dynamiclib
,我不知道如何禁用它。我也不知道使用这个“捆绑”选项是否有助于解决我的问题。
什么是使用qmake构建这样的插件的正确方法?
编辑/更新: 我从QtCreator中使用qmake。在编译TEMPLATE = lib
时,qmake自动提供(并强制)-dynamiclib
。当-dynamiclib
提供给编译器时,它说我不能将-bundle_loader
与-dynamiclib
一起使用。该消息表明它被禁止。因此,我正在寻找一种方法来删除-dynamiclib
。
是的,我已阅读qmake手册。不是“逐字”,但通常我在那里寻找我的问题,没有运气。
我使用Qt/qmake 5.3.1,QtCreator与Qt包(3.1.2)一起发货。
你应该可以使用dynamiclib – 2014-09-01 16:41:44
你能否澄清一下你的问题?你用什么IDE?哪个版本的Qt/qmake?你有没有读过qmake手册http://qt-project.org/doc/qt-5/qmake-manual.html? – 2014-09-02 07:42:31
@Sergey:感谢您的评论,我更新了这个问题。 – Googie 2014-09-02 09:56:25