为什么我的XCode构建中的静态库不适用于x86_64架构?

时间:2015-03-14 20:58:15

标签: xcode swift static-libraries x86-64

前提:

我正在尝试构建一个C的静态库,通过一个Objective-c桥接头从Swift项目中引用。我构建了静态库,将其包含在我的项目中,Sourcekit识别我想从静态库中调用的函数,但我仍然遇到错误(详见下文)。

我按照Wenderlich Tutorial在XCode中创建静态库。当我生成通用二进制文件时,运行lipo命令:

lipo -info libMyStaticLib.a

我明白了:

Architectures in the fat file: libMyStaticLib.a are: armv7 armv7s i386 arm64

我发现它没有构建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

我见过类似的StackOverflow问题:

XCode 6.1 Missing required architecture X86_64 in file for extern library

XCode 6.1 Missing required architecture X86_64 in file

我已经尝试过列出的解决方案,但似乎没有任何东西可以构建那个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 -arch i386 BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"

构建设置中的“有效架构”目前设置为armv7,armv7s和arm64 - 虽然我已经尝试过根据某人的建议将其设置为armv7,但这也无效。

我正在使用XCode版本6.2,我在OSX Yosemite 10.10.2。

任何人都可以帮忙吗?

0 个答案:

没有答案