MacOSX 10.8.5 でアプリケーションをコンパイルし、必要なものをすべて含む .app ディレクトリを作成します。これは、もともと Linux でテストされた wxWidgets および OpenGL アプリです。実行すると、完全に正常に動作します。ただし、2 回目に実行すると、次のメッセージで失敗します。
LSOpenURLsWithRole() failed with error -10810 for the file /...path to the app directory.../
最初の実行の前にディレクトリをコピーして、それらに対して diff を実行しました。
diff -ENwbur coupid.app coupid-orig.app
Binary files coupid.app/Contents/MacOS/coupid and coupid-orig.app/Contents/MacOS/coupid differ
coupid
アプリケーションの名前です。それは、OSがバイナリを変更したことを意味します!!! そして、この変更の後、バイナリはその奇妙なエラーで実行されません。私はMacにまったく慣れていないので、助けてください.Macと互換性があるようにする必要があります.
アプリケーションを gcc コンパイラでコンパイルしました。これがコマンド ラインです (メイン ファイルのみ)。
g++ -DHAVE_CONFIG_H -I. -I.. -I/opt/local/lib/wx/include/osx_cocoa-unicode-2.9 -I/opt/local/include/wx-2.9 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D_ WXMAC _ -D_ WXOSX _ -D__WXOSX_COCOA__ -I../../src -g -O2 -Wall -D_GNU_SOURCE -g -O2 -I/opt/local/lib/wx/include/osx_cocoa-unicode-2.9 -I/opt/local/include/wx- 2.9 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D_ WXMAC _ -D_ WXOSX _ -D__WXOSX_COCOA__ -MT coupid.o -MD -MP -MF .deps/coupid.Tpo -c -o coupid.o coupid.cc
これはリンク行です:
g++ -I../../src -g -O2 -Wall -D_GNU_SOURCE -g -O2 -I/opt/local/lib/wx/include/osx_cocoa-unicode-2.9 -I/opt/local/include/wx -2.9 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D_ WXMAC _ -D_ WXOSX _ -D__WXOSX_COCOA__ -framework GLUT -lhdf5 -llua -o coupid coupid.o data.o model.o vars.o images.o frame.o dialog.o ユーティリティ.o ../../src/lpio.o -lavcodec -lpthread -lz -lavutil -lpng -llua -lhdf5 -lm -L/opt/local/lib -framework IOKit -framework Carbon -framework Cocoa -framework AudioToolbox -フレームワーク システム -framework OpenGL -lwx_osx_cocoau_html-2.9 -lwx_osx_cocoau_core-2.9 -lwx_baseu_net-2.9 -lwx_osx_cocoau_gl-2.9 -lwx_baseu-2.9
繰り返しますが、私の質問は次のとおりです。
- OS がバイナリを変更する理由と、OS はそれに対して何をするのですか?
- その変更後に実行されない理由
- この動作を回避して問題を解決するにはどうすればよいですか。
PS。友人と一緒に別の MacBook Pro でテストしましたが、彼もまったく同じ問題を抱えています。PPS。別の友人が Mac Air で実行し、同じ問題が発生しました! 非常に紛らわしいです。
PPPS。Info.plist ファイル:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIconFile</key>
<string>icon</string>
<key>BuildMachineOSBuild</key>
<string>10K549</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>coupid</string>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.coupid</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>coupid</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string></string>
<key>DTPlatformBuild</key>
<string>10M2518</string>
<key>DTPlatformVersion</key>
<string>PG</string>
<key>DTSDKBuild</key>
<string>10M2518</string>
<key>DTSDKName</key>
<string>macosx10.6</string>
<key>DTXcode</key>
<string>0400</string>
<key>DTXcodeBuild</key>
<string>10M2518</string>
<key>LSMinimumSystemVersion</key>
<string>10.6</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>