iPhone 应用程序上的 Xcode 链接器错误(仅在模拟器上)

问题描述 投票:0回答:4

我收到此链接器错误,该错误不允许我进行编译。它只发生在模拟器上。

要点:
- 仅发生在模拟器中
- 与这个问题类似,但在我的.pbxproj文件中没有发现FRAMEWORK_SEARCH_PATHS
- 虽然我的操作系统是 10.6.2,但我必须构建目标 1.5 以避免其他链接器错误
- libxml2.dylib IS 必需,并且位于我的框架组中
- 其他引用的库我从未听说过。
- 尝试在框架下引入其他库,没有解决。


Build SpaceTweet of project SpaceTweet with configuration Debug

Ld build/Debug-iphonesimulator/SpaceTweet.app/SpaceTweet normal i386
cd "/Users/Scott/Desktop/iPhone Dev/SpaceTweet(Experimental)"
setenv MACOSX_DEPLOYMENT_TARGET 10.5
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.3.sdk "-L/Users/Scott/Desktop/iPhone Dev/SpaceTweet(Experimental)/build/Debug-iphonesimulator" -L/Users/Scott/Desktop "-L/Users/Scott/Desktop/iPhone Dev/SpaceTweet(Experimental)/../../libYAJLIPhone-0" -L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/lib -L/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.3.sdk/usr/lib -L/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/usr/lib "-F/Users/Scott/Desktop/iPhone Dev/SpaceTweet(Experimental)/build/Debug-iphonesimulator" -filelist "/Users/Scott/Desktop/iPhone Dev/SpaceTweet(Experimental)/build/SpaceTweet.build/Debug-iphonesimulator/SpaceTweet.build/Objects-normal/i386/SpaceTweet.LinkFileList" -mmacosx-version-min=10.5 -framework Foundation -framework UIKit -framework CoreGraphics -framework AVFoundation -framework MessageUI -lYAJLIPhone -lxml2 -o "/Users/Scott/Desktop/iPhone Dev/SpaceTweet(Experimental)/build/Debug-iphonesimulator/SpaceTweet.app/SpaceTweet"

ld: warning: in /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/lib/libxml2.dylib, missing required architecture i386 in file
ld: warning: in /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/lib/libSystem.dylib, missing required architecture i386 in file
ld: in /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/lib/libobjc.A.dylib, missing required architecture i386 in file
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1



线索:
同样,我的问题与这个已解决的问题非常相似,只是在我的情况下,我在项目包的 .pbxproj 文件中没有找到 FRAMEWORK_SEARCH_PATHS 条目,因此无法以解决该问题的方式解决。

iphone xcode compiler-construction osx-snow-leopard ios-simulator
4个回答
12
投票

问题是这样的:

-L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/lib 

这告诉您的模拟器(i386)构建使用来自设备(arm)/usr/lib 的文件。

在目标中找到 /usr/lib 所在的位置(只需使用目标的“获取信息/构建设置”选项卡中的“搜索气泡”)并将其删除。如果没有告诉编译器首先使用错误的平台,编译器将使用正确平台的 usr/lib。


4
投票

我也有同样的问题。事实证明,我的发布版本代码可以在调试环境中运行。单击“编辑架构...”并将“构建配置”更改为“发布”解决了我的问题。


0
投票

我也遇到过同样的事情。我删除并重新添加了所有框架,但仍然遇到同样的问题。为了消除错误,我最终不得不从构建设置下的库搜索路径中删除指向有问题库的路径。


0
投票

按照以下步骤操作:

解决方案1

右键单击应用程序文件夹中的 Xcode

获取信息

使用 Rosetta 检查打开

打开Xcode

打开项目

清理构建文件夹

运行项目

通过使用 Rosseta 打开 Xcode,不需要其他构建设置或配置。

解决方案2

进入菜单栏“产品”

目的地

目的地架构

同时显示

从设备下拉菜单中选择旁边有 Rosseta 的模拟器。

运行项目

© www.soinside.com 2019 - 2024. All rights reserved.