3

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 つの質問があります。

  1. この問題を解決する方法は知っていますinstall_name_toolが、qmake と .pro ファイルでこの問題を解決したいと考えています。では、pro config ファイルでこの問題を解決するにはどうすればよいでしょうか?

  2. エルキャピタンではDYLD_LIBRARY_PATH、セキュリティ上の理由からご利用いただけません。それを使用するには、SIP (システム整合性保護) を無効にする必要があります。SIPを非アクティブ化せずにDYLD_LIBRARY_PATHを使用する方法はありますか?

4

1 に答える 1