2

我在 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

同样,我的问题是:

  1. 为什么操作系统会更改二进制文件以及它对它有什么作用?
  2. 为什么更改后它不运行它
  3. 我能做些什么来避免这种行为并解决问题。

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>
4

0 回答 0