在XCode 6.1中,我收到了iPhone 6,iPhone 5s(iOS 7.1)的错误
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_ClientAuthenticator", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
linker command failed with exit code 1
Run Code Online (Sandbox Code Playgroud)
这就是我对架构设置的看法
Architectures : Standard Architectures(armv7, arm64) - $(ARCHES_STANDARD)
Base SDK : Latest iOS(8.1)
Valid Architectures: arm64, armv7, armv7s
IOS Deployment Target: iOS 6.0
Run Code Online (Sandbox Code Playgroud)
最近我将我的操作系统更新到Yosemite和XCode从6.0到6.1.我在Stackoverflow上搜索了这个涉及XCode 5.1的问题并尝试了所有给定的解决方案,但没有任何效果.
更新 - 我按照答案中的建议尝试了更改,但我仍然收到错误,上面写着" 缺少必需的体系结构X86_64 ".在进一步调查中,我发现来自我的库的文件ClientAuthenticator.o没有为X86_64架构构建,可能这是问题所在?我正在寻找它如何为x86_64构建.
我的新问题是arm64和x86_64有什么区别?更多它似乎只是架构制造商之间的差异,但基本的64位架构保持不变.
我一直在尝试构建一个静态库,然后在Xamarin中创建一个绑定项目.一切正常,直到iOS 7出现.我不得不抓住最新版本的本机库并尝试在XCode 5中构建它,但它一直给我带来各种各样的问题.我认为它可能与构建过程有关,或者可能与XCode 5中的某些更改设置有关(相对于4),但我不确定.
我正在使用这个脚本来构建一个基于这个问题的工作的通用二进制文件:
我注意到的一件事是,之前,在我的二进制版本的旧版iOS 6.1版本(内置在XCode 4中)中,我的二进制文件大约是24 Mb,现在使用XCode 5它已经膨胀到接近50 Mb!这让我觉得编译和链接步骤有问题.
有任何想法吗?有没有其他人在XCode 5(vs 4)中遇到通用二进制文件的问题?
前提:
我正在尝试构建一个C的静态库,通过一个Objective-c桥接头从Swift项目中引用.我构建了静态库,将其包含在我的项目中,Sourcekit识别我想从静态库中调用的函数,但我仍然遇到错误(详见下文).
我按照Wenderlich教程在XCode中创建静态库.当我生成通用二进制文件时,运行lipo命令:
lipo -info libMyStaticLib.a
Run Code Online (Sandbox Code Playgroud)
我明白了:
Architectures in the fat file: libMyStaticLib.a are: armv7 armv7s i386 arm64
Run Code Online (Sandbox Code Playgroud)
我发现它没有构建x86_64架构,因为当我在需要库的项目中链接它时,我得到了错误:
ld: warning: ignoring file
/Users/jamesmart/SourcetreeProjects/MyProject/libMyStaticLib.a, missing
required architecture x86_64 in file
/Users/jamesmart/SourcetreeProjects/MyProject/libMyStaticLib.a (4 slices)
Undefined symbols for architecture x86_64:
"_helloWorld", referenced from:
__TFC7MyProject16BridgePlayground12sendIntToGetfS0_FT_T_ in BridgePlayground.o
ld: symbol(s) not found for architecture x86_64
Run Code Online (Sandbox Code Playgroud)
我见过类似的StackOverflow问题:
XCode 6.1在extern库的文件中缺少所需的体系结构X86_64
我已经尝试了列出的解决方案,但似乎没有什么能够构建那个darn x86_64架构.我也尝试将静态库构建到许多目标设备:
只是试图链接图片,但我没有足够的声誉,抱歉...
但我已经尝试过针对模拟器和iOS设备,两种选择都没有解决这个问题.
在我的静态库构建设置中,"仅构建活动体系结构"设置为"否",并且在我的运行脚本构建阶段中作为参数传递给xcodebuild函数:
xcodebuild -target SegmentationLib ONLY_ACTIVE_ARCH=NO -configuration
${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}"
BUILD_ROOT="${BUILD_ROOT}"
xcodebuild -target SegmentationLib -configuration ${CONFIGURATION} -sdk
iphonesimulator …Run Code Online (Sandbox Code Playgroud)