我想运行由其他人开发的Xcode项目,我不断收到以下错误。谷歌搜索表明,我错过了一些依赖,但如果是这样,我不知道哪一个。假设该项目已经配置了所有“Link Binary With Libraries”。我已经尝试过不同版本的Xcode和目标设备,并且出现同样的错误。我怎样才能进一步缩小问题的范围?如何解决“架构i386的未定义符号”
Undefined symbols for architecture i386:
"___gl_pqSortExtractMin", referenced from:
___gl_computeInterior in sweep.o
"___gl_pqSortMinimum", referenced from:
___gl_computeInterior in sweep.o
"___gl_pqSortNewPriorityQ", referenced from:
_InitPriorityQ in sweep.o
"___gl_pqSortInsert", referenced from:
_InitPriorityQ in sweep.o
_CheckForIntersect in sweep.o
"___gl_pqSortInit", referenced from:
_InitPriorityQ in sweep.o
"___gl_pqSortDeletePriorityQ", referenced from:
_InitPriorityQ in sweep.o
_DonePriorityQ in sweep.o
_CheckForIntersect in sweep.o
"___gl_pqSortDelete", referenced from:
_CheckForRightSplice in sweep.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
编译命令的精简版本是这样的:/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang -arch i386 -filelist project.LinkFileList。 project.LinkFileList在这个目录中包含一堆.o文件:〜/ Library/Developer/Xcode/DerivedData /.../ Debug-iphonesimulator /.../ Objects-normal/i386 /。如果我在这些文件上运行“lipo -info”,我会为它们获得“非胖文件:filename.o是架构:i386”。 – Olbion
mmm ...我认为你在错误的文件上做了lipo。你应该找到你要链接的特定的静态库:静态lib,你可以得到所有的gl_pqSortExtractMin,gl_pqSortInit;不是哭泣。它必须是一个libxxx.a数据文件。顺便说一下,首先尝试找到这个静态库的位置,然后检查Xcode是否正确链接了它。你可以在“BuildSetting-> Search Paths-> library search path”中查看它,你的静态库应该有一个链接路径。 –
事情是我即使在没有添加任何静态库的情况下运行clang时也会出现此错误。另外,如果这个错误是由于缺少一个库,我怎么知道它是哪一个? – Olbion