MacOS X-编译一个插件
MacOS X - compiling a plugin
我的应用程序可以加载插件。插件可以使用主可执行文件中的符号。
它是用C++和Qt编写的。我正在使用qmake来构建它。
在Linux下,有一个弱链接,它允许我的插件在不满足所有符号依赖关系的情况下进行编译和链接(无论如何,这将由加载应用程序在运行时提供)。
Windows要求满足所有符号。在-Wl,--export-all-symbols,--out-implib,libMyApp.a
的帮助下,我成功地使用了mingw32,它从可执行文件中生成了一个符号表,供链接器在链接插件时使用。
现在我在MacOS X上遇到了一个问题。我不知道如何处理它。我在苹果的帮助下发现,我应该使用-bundle -bundle_loader MyApp
编译插件,而不是使用-dynamiclib
。问题是qmake强制-dynamiclib
,我不知道如何禁用它。我也不知道使用这个"捆绑包"选项是否有助于解决我的问题。
使用qmake构建此类插件的正确方法是什么?
编辑/更新:我在QtCreator中使用qmake。在编译TEMPLATE = lib
时,qmake会自动提供(并强制)-dynamiclib
。当-dynamiclib
提供给编译器时,它说我不能将-bundle_loader
与-dynamiclib
一起使用。信息表明这是被禁止的。因此,我正在寻找一种删除-dynamiclib
的方法。
是的,我已经阅读了qmake手册。不是"逐字逐句",但总的来说,我一直在那里寻找我的问题,但运气不佳。
我使用Qt/qmake 5.3.1,Qt呼吸机与Qt包装(3.1.2)一起装运。
从这里开始
使用lib模板时,可以将以下选项添加到CONFIG变量中,以确定构建的库的类型:
插件-库是一个插件;这也启用了dll选项。
所以,尝试添加到你的.pro文件
macx:{ CONFIG += plugin QMAKE_LFLAGS_SHLIB -= -dynamiclib QMAKE_LFLAGS_PLUGIN -= -dynamiclib QMAKE_LFLAGS_PLUGIN += -bundle }
类似地,您可以控制项目的编译标志。
关于qmake变量的其他信息可以在这里找到。
- 我想通过带有C++和Python的插件创建一个可扩展的应用程序
- 插件:TypeError:addons.function() 不是一个函数
- 我可以用C++/WinRT编写一个DLL,供windows桌面应用程序(而不是UWP)或Unity插件使用吗
- 将窗口句柄从一个进程使用到另一个进程(插件 vst 音频)
- 错误访问另一个插件中的类(错误:未定义的引用)
- 将指针插件更改为另一个对象
- 在C 中创建一个记事本 插件
- 一个 Excel XLL 插件可以有多少内存?
- 在另一个线程中调试插件
- 使用混合的 C/C++ 源文件构建一个 NodeJS 插件
- GStreatermm:通过从Gst::element派生创建一个新的元素类型(在插件中)
- 如何创建一个继承自QWidget的qt插件
- 构建一个插件来扩展Qt应用程序
- 我可以使用NPAPI在一个DLL中创建多个插件吗
- MacOS X-编译一个插件
- 创建一个QML插件来运行系统命令
- 试图使一个.dll插件,但通过程序调试给出了错误
- 我如何使用std::string在一个c++插件的Node.js
- 应该如何绑定.用OpenNI编写一个Node.js插件
- 我如何创建一个自定义(小部件)插件qt设计器与cmake(和visual studio)