我的應用程序可以加載插件。插件可以使用主要可執行文件中的符號。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