我在 MacOSX 10.8.5 上编译我的应用程序并创建 .app 目录,其中包含所有必要的东西。它是最初在 Linux 上测试的 wxWidgets 和 OpenGL 应用程序。当我运行它时,它工作得非常好。但是,如果我第二次运行它,它会失败并显示以下消息:
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
是应用程序的名称。这意味着操作系统更改了二进制文件!!!在此更改之后,二进制文件不会以那个奇怪的错误运行。请帮忙,因为我对 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
同样,我的问题是:
- 为什么操作系统会更改二进制文件以及它对它有什么作用?
- 为什么更改后它不运行它
- 我能做些什么来避免这种行为并解决问题。
PS。我和我的朋友在另一台 MacBook Pro 上对其进行了测试,他遇到了完全相同的问题。聚苯乙烯。另一个朋友在 Mac Air 上运行它,同样的问题!非常混乱。
购买力平价。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>