我的应用程序可以加载插件。插件可以使用主可执行文件中的符号。
用Qt用C ++编写。我正在使用qmake构建它。
在Linux下有一个弱链接,它允许我的插件被编译和链接而不满足所有符号依赖性(无论如何它将由加载应用程序在运行时提供)。
Windows要求满足所有符号。我设法在-Wl,--export-all-symbols,--out-implib,libMyApp.a
的帮助下使用mingw32执行此操作,该链接生成链接插件时链接器使用的可执行文件中的符号表。
现在我遇到了MacOS X的问题。我不知道如何处理它。我在Apple的帮助here找到了我应该编译我的插件而不是-dynamiclib
,而是我应该使用-bundle -bundle_loader MyApp
。问题是qmake强制-dynamiclib
并且我不知道如何禁用它。我也不知道使用这个“捆绑”选项是否有助于解决我的问题。
使用qmake构建此类插件的正确方法是什么?
EDIT / UPDATE:
我在QtCreator中使用qmake。编译-dynamiclib
时,qmake会自动提供(并强制)TEMPLATE = lib
。向编译器提供-dynamiclib
时,它表示我无法将-bundle_loader
与-dynamiclib
一起使用。该消息表明它是被禁止的。因此,我正在寻找一种方法来删除-dynamiclib
。
是的,我已阅读qmake手册。不是“逐字逐句”,但一般我在那里寻找我的问题,没有运气。
我使用Qt / qmake 5.3.1,QtCreator与Qt包(3.1.2)一起发货。