Mac OS X El Capitan (10.11.x) でライブラリを作成し、qt 作成者によって別のアプリケーションで使用したいので、この設定で qt で簡単なライブラリを作成しました。
QT -= gui
TARGET = /System/Library/Frameworks/MyFrm.framework/dylib/DynminLinkingLib
TEMPLATE = lib
ご覧のとおり、MyFrm フレームワークに「DynminLinkingLib」ライブラリを作成しました。その後、ライブラリを使用する Qt アプリケーションを作成しました。
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = SampleProject
TEMPLATE = app
macx: LIBS += -L/System/Library/Frameworks/MyFrm.framework/dylib -lDynminLinkingLib.1.0.0
INCLUDEPATH += /System/Library/Frameworks/MyFrm.framework/include
Qt でアプリケーションを実行すると、次のエラーが表示されます。
dyld: Library not loaded: libDynminLinkingLib.1.dylib
Referenced from: /Users/mac/Src/dll/DynamicLinking/build-SampleProject-Desktop_Qt_5_5_0_clang_64bit-Debug/SampleProject.app/Contents/MacOS/SampleProject
Reason: image not found
The program has unexpectedly finished.
Qt プロジェクトでこのエラーを解決するために、DYLD_LIBRARY_PATH
変数をに設定する/System/Library/Frameworks/MyFrm.framework/dylib
とうまく機能しますが、バンドル アプリケーションを実行すると機能せず、次のエラーが表示されます。
これは、「libDynminLinkingLib.1.dylib」がアプリケーション パスにないためです。
otool -D /System/Library/Frameworks/MyFrm.framework/dylib/libDynminLinkingLib.1.0.0.dylib
libDynminLinkingLib.1.dylib
2 つの質問があります。
この問題を解決する方法は知っています
install_name_tool
が、qmake と .pro ファイルでこの問題を解決したいと考えています。では、pro config ファイルでこの問題を解決するにはどうすればよいでしょうか?エルキャピタンでは
DYLD_LIBRARY_PATH
、セキュリティ上の理由からご利用いただけません。それを使用するには、SIP (システム整合性保護) を無効にする必要があります。SIPを非アクティブ化せずにDYLD_LIBRARY_PATHを使用する方法はありますか?