Xcode:由于不同的体系结构,链接到C ++库失败

时间:2013-07-12 16:52:16

标签: xcode architecture linker objective-c++

我正在尝试使用Objective-C ++中的Xcode开发一个iOS应用程序(因此使用.m,.mm和.cpp文件)。 .cpp文件使用第三方库(OpenCV)。

构建在链接时失败,出现这样的警告(导致未定义的引用错误):

ld: warning: ignoring file /opt/local/lib/libopencv_calib3d.dylib,
file was built for unsupported file format
( 0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0 )
which is not the architecture being linked (i386): 
/opt/local/lib/libopencv_calib3d.dylib

我的目标是 i386

我可以在构建日志中看到Xcode运行以下命令:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch i386 ...

我不知道它是否相关,但当我在终端中输入llvm-g++ --version时,我得到:

i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)

我可以做些什么来使一切都建立在相同的架构上?

1 个答案:

答案 0 :(得分:0)

我最终偶然发现了与我使用的OpenCV库完全相同的OpenCV库,但使用了正确的架构(i386)。它是作为框架this Github repository内提供的。

现在Xcode能够完成整个构建过程,因为所有内容都是在同一个arch中构建的! :d