実行時にのみパスを知っている Mac にフレームワーク (または dylib) をロードしようとしています。
Windows ソリューション:
- ライブラリを /DELAYLOAD でリンク
- ライブラリの関数を使用する直前に、プログラムの現在のディレクトリを dll が存在するディレクトリに変更します。
- このライブラリから関数を呼び出します。dll は現在のディレクトリからロードされます
Mac では、弱いリンクを使用して、ライブラリがまだ利用可能でなくてもアプリケーションを起動できます。ただし、ライブラリの関数が必要になるとすぐに、「画像が見つかりません」というメッセージが表示され、アプリケーションが中止されます。
ライブラリを探す場所を実行時に Mac ダイナミック リンカーに伝えるにはどうすればよいですか? 「dlopen」は、ライブラリをロードするだけでシンボルを解決しないため、機能しません。rpath を "." に設定します。(現在のディレクトリ) であり、現在のディレクトリの変更は機能しません。一般的な環境変数 (DYLD_LIBRARY_PATH) の設定は、実行時ではなく、実行可能ファイルの実行前に行われた場合にのみ機能します。
他のアイデアはありますか?