17

我有一些我为在 armv7 架构上使用而构建的静态库。当我尝试在我在 iphone 5.0 模拟器上测试运行的 iOS 项目中使用它们时,我undefined symbols for architecture i386在我的静态库中收到错误消息。

所以我想这意味着 iphone 模拟器想要为 i386 编译的库?那么模拟器的意义何在 - 为什么它不模拟 armv7 架构呢?

所以我可以测试我的静态库的唯一方法是连接物理 iOS 设备并运行它?

还是我弄错了?

4

4 回答 4

28

所以我想这意味着 iphone 模拟器想要为 i386 编译的库?那么模拟器的意义何在 - 为什么它不模拟 armv7 架构呢?

你已经回答了你自己的问题。是模拟器,不是模拟器。因此它是一个 Mac OSX 程序,运行在 i386 架构上。如果您也为 i386 编译静态库,您将能够在模拟器上使用它们。

于 2011-10-24T10:57:01.533 回答
9

我不太确定,但i386适用于模拟器,而armv7适用于您已连接到机器的设备。

于 2011-10-24T10:57:32.130 回答
4

您实际上可以使用 i386 架构通过 Xcode 命令行工具编译应用程序(也可以通过修改构建设置在 Xcode UI 中运行它)。

xcodebuild -sdk iphonesimulator6.1 -arch i386 VALID_ARCHS="i386 armv7 armv7s" clean install

在您拥有 projectName.xcodeproj 文件的目录中运行此命令。

这是脚本的分解:

-sdk iphonesimulator6.1 // Build the app on iPhone simulator 6.1
-arch i386 // Build your app using i386 architecture
VALID_ARCHS="i386 armv7 armv7s" // Specify these architectures are valid
clean install // Clean all the builds then re-build and install
于 2013-08-20T01:08:23.890 回答
0

如果您想尝试使用 i386 的模拟器,请选择 =< iPhone 5。

于 2017-09-04T07:22:11.403 回答