OS X(基本的にはバンドル/ DyLib)でPhotoshopプラグインを作成しています。
私はインテル®コンパイラーを使用しており、OpenMP(libiomp5
)とリンクしてOpenMPを使用しています。
静的リンクを使用すると、Photoshopがクラッシュします(WindowsではOS X上でのみ動作します)。
私はダイナミックリンクを試みました。プラグイン(Bundle/DyLib)の検索パスを設定する
ホストであるPhotoshopは、そのフレームワークフォルダにあるlibiomp5.dylib
を単独で使用します。
Xcodeでは、リンク先の部品をRunpath Search Paths
から@executable_path/../Frameworks/
に設定しましたが、Photoshopで読み込もうとすると機能しません。
Runpath Search Paths
〜Intel Run Time Redistributable Libraries(Photoshopのフレームワークライブラリと同じように、プラグインに必要なすべてのDyLibがMacDependencyに設定されています)を設定しようとしましたが、それでもPhotoshopにはロードされません。
私はプラグインで上のコマンドotool -Lを使用する場合は、私が取得:
/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 157.0.0)
libimf.dylib (compatibility version 0.0.0, current version 0.0.0)
libsvml.dylib (compatibility version 0.0.0, current version 0.0.0)
libirng.dylib (compatibility version 0.0.0, current version 0.0.0)
libiomp5.dylib (compatibility version 5.0.0, current version 5.0.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
libintlc.dylib (compatibility version 1.0.0, current version 1.13.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 62.0.0)
私はプラグインで上otool -l
をしようとしたとき、私はXcodeで挿入するか見てください:
Load command 6
cmd LC_UUID
cmdsize 24
uuid B61F2961-AD6D-30B9-AF58-C67689731966
Load command 7
cmd LC_VERSION_MIN_MACOSX
cmdsize 16
version 10.7
sdk 10.10
Load command 8
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (offset 24)
time stamp 2 Thu Jan 1 02:00:02 1970
current version 157.0.0
compatibility version 2.0.0
Load command 9
cmd LC_LOAD_DYLIB
cmdsize 40
name libimf.dylib (offset 24)
time stamp 2 Thu Jan 1 02:00:02 1970
current version 0.0.0
compatibility version 0.0.0
Load command 10
cmd LC_LOAD_DYLIB
cmdsize 40
name libsvml.dylib (offset 24)
time stamp 2 Thu Jan 1 02:00:02 1970
current version 0.0.0
compatibility version 0.0.0
Load command 11
cmd LC_LOAD_DYLIB
cmdsize 40
name libirng.dylib (offset 24)
time stamp 2 Thu Jan 1 02:00:02 1970
current version 0.0.0
compatibility version 0.0.0
Load command 12
cmd LC_LOAD_DYLIB
cmdsize 40
name libiomp5.dylib (offset 24)
time stamp 2 Thu Jan 1 02:00:02 1970
current version 5.0.0
compatibility version 5.0.0
Load command 13
cmd LC_LOAD_DYLIB
cmdsize 48
name /usr/lib/libc++.1.dylib (offset 24)
time stamp 2 Thu Jan 1 02:00:02 1970
current version 120.0.0
compatibility version 1.0.0
Load command 14
cmd LC_LOAD_DYLIB
cmdsize 56
name /usr/lib/libSystem.B.dylib (offset 24)
time stamp 2 Thu Jan 1 02:00:02 1970
current version 1213.0.0
compatibility version 1.0.0
Load command 15
cmd LC_LOAD_DYLIB
cmdsize 40
name libintlc.dylib (offset 24)
time stamp 2 Thu Jan 1 02:00:02 1970
current version 1.13.0
compatibility version 1.0.0
Load command 16
cmd LC_LOAD_DYLIB
cmdsize 104
name /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (offset 24)
time stamp 2 Thu Jan 1 02:00:02 1970
current version 62.0.0
compatibility version 1.0.0
Load command 17
cmd LC_RPATH
cmdsize 48
path @executable_path/../Frameworks/ (offset 12)
Load command 18
cmd LC_FUNCTION_STARTS
cmdsize 16
dataoff 3486976
datasize 5616
Load command 19
cmd LC_DATA_IN_CODE
cmdsize 16
dataoff 3492592
datasize 0
場合私はRunpath Search Paths
をIntel Run Time Redistributable Librariesに設定しました。適切なパスも表示されますが、結果は同じです。
誰でも私を助けることができますか?
私は経験豊富な開発者ではありませんので、ステップバイステップは素晴らしいでしょう。
リファレンス - http://qin.laya.com/tech_coding_help/dylib_linking.html – Royi
リファレンス - http://stackoverflow.com/questions/33991581/install-name-tool-to-update -a-executable-to-dylib-in-mac-os-x – Royi
リファレンス - http://thecourtsofchaos.com/2013/09/16/how-to-copy-and-relink-binaries-on -osx/ – Royi