我一直面临这个挥之不去的问题。当我尝试通过在我的 Xcode 中选择 iOS 设备来构建项目时,它会构建代码而不会出现任何错误,但是当我尝试使用 iOS 模拟器进行相同操作时,它会显示以下错误。当我在模拟器中构建时,有什么办法可以避免这个库文件吗?我也尝试了以下链接,但我无法找到确切的解决方案。
提前致谢。
6 duplicate symbols for architecture i386
ld: warning: ignoring file /Users/iOS-MobileTeam/Downloads/iOS/LibraryFiles/libANMobilePaymentLib.a, missing required architecture i386 in file /Users/iOS-MobileTeam/Downloads/iOS/LibraryFiles/libANMobilePaymentLib.a (2 slices)
duplicate symbol _des_set_key in:
/Users/iOS-MobileTeam/Downloads/iOS/LineaSDK/libdtdev.a(des-524F6BE9122BCA82.o)
/Users/iOS-MobileTeam/Downloads/iOS/LineaSDK/libdtdev.a(des-D9CE0CBEE0B3BA81.o)
duplicate symbol _des_encrypt in:
/Users/iOS-MobileTeam/Downloads/iOS/LineaSDK/libdtdev.a(des-524F6BE9122BCA82.o)
/Users/iOS-MobileTeam/Downloads/iOS/LineaSDK/libdtdev.a(des-D9CE0CBEE0B3BA81.o)
duplicate symbol _des_decrypt in:
/Users/iOS-MobileTeam/Downloads/iOS/LineaSDK/libdtdev.a(des-524F6BE9122BCA82.o)
/Users/iOS-MobileTeam/Downloads/iOS/LineaSDK/libdtdev.a(des-D9CE0CBEE0B3BA81.o)
ld: 3 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Ignoring file /Users/iOS-MobileTeam/Downloads/iOS/LibraryFiles/libANMobilePaymentLib.a, missing required architecture i386 in file /Users/iOS-MobileTeam/Downloads/iOS/LibraryFiles/libANMobilePaymentLib.a (2 slices)
最佳答案
静态库已损坏,因为它包含两个包含相同符号(函数)的独立目标文件。
它必须重建,或者如果您没有源代码,您可以将其解压,删除有问题的文件,然后重新打包(未经测试):
$ mv libdtdev.a libdtdev-old.a
$ mkdir xxx
$ cd xxx
$ ar x ../libdtdev-old.a
$ rm des-D9CE0CBEE0B3BA81.o
$ ar cr ../libdtdev.a *.o
$ cd ..
$ rm -rf xxx
但是,如果静态库包含多个体系结构,这将变得多复杂。
关于ios - 为 iOS 设备构建成功但为 iOS 模拟器构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27033775/