MacOSX更改我的可执行文件,它不会第二次运行

时间:2013-10-03 19:58:29

标签: c++ macos opengl gcc wxwidgets

我在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 utility.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 System -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. 如何避免此行为并解决问题。
  4. 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>
    

0 个答案:

没有答案