使用 Qt 链接到 iOS 模拟器上的静态库时不兼容的架构



在构建我的Qt项目(iOS应用程序)时,我收到缺少架构(i386)的符号未找到错误。

该项目使用子目录,再次包含 2 个自写库和一个链接到它们的应用程序。

经过一些调查,我发现我的库使用 armv7 和 arm64,而我的应用程序使用 i386。我从中得到的是,链接器似乎找不到具有各自体系结构的库。

这是我在构建时从编译器得到的:

ld: 警告: ld: 警告: 忽略文件/Users/me/myprojects/build-myproject-iphonesimulator_clang_Qt_5_7_1_for_iOS-Release/install/lib/libwebdav.a, 文件/Users/me/myprojects/build-myproject-iphonesimulator_clang_Qt_5_7_1_for_iOS-Release/install/

lib/libwebdav.a 中缺少所需的架构 i386(2 个切片)忽略文件/Users/me/myprojects/build-myproject-iphonesimulator_clang_Qt_5_7_1_for_iOS-Release/install/lib/libcommon.a, 文件/Users/me/myprojects/build-myproject-iphonesimulator_clang_Qt_5_7_1_for_iOS-Release/install/lib/libcommon.a 中缺少所需的架构 i386(2 个切片)

架构 i386 的未定义符号: "CalendarEvent::staticMetaObject",引用自: qt_meta_extradata_QMLEventWrapper在moc_qmleventwrapper.o int qRegisterMetaType(char const*, CalendarEvent::APM_TYPE*, QtPrivate::MetaTypeDefinedHelper::D efined) && (!(QMetaTypeId2::IsBuiltIn))>::D efinedType) in moc_qmleventwrapper.o "CalendarEvent::colorHex() const",引用自: QMLEventWrapper::color() const in qmleventwrapper.o

LD:找不到架构 i386 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

**构建失败 ** 以下生成命令失败: Ld myproject.build/Release-iphonesimulator/myproject.build/Objects-normal/i386/myproject normal i386 (1 次失败) make[1]:* [xcodebuild-release-iphonesimulator] 错误 65 制造: * [子应用程序-make_first] 错误 2

提前致谢

您正在尝试在模拟器上运行它,该模拟器支持体系结构 i386/x86_64(计算机的处理器)。

解决方法:

在设备而不是模拟器上进行测试

溶液:

也为 i386/x86_64 构建所有使用的库。

原来这是qmake中的一个错误。 在一次非常绝望的尝试中,我安装了Qt 5.8.0并再次尝试编译。像魅力一样工作。 我之前使用的是Qt 5.7.1,它试图为iPhone而不是模拟器构建库,导致错误的架构。 见 https://bugreports.qt.io/browse/QTBUG-58007

最新更新