我有一个庞大的现有Xcode项目,现在我想添加armadillo库。
我已经下载了它(使用macports)并使用Cmake(就像C ++终端应用程序一样)。我没有在我的大项目(iPad应用程序)中使用Cmake,所以我试图链接库。我查看了我使用cmake的xcode-project文件,并将其添加到我的项目中。
添加了: 标题搜索路径:/ opt / local / include 库搜索路径:/ opt / local / lib 其他链接器标志:-larmadillo
我还将libarmadillo.3.4.0.dylib添加到“使用二进制文件链接库”
ld: warning: ld: warning: ignoring file /opt/local/lib/libarmadillo.3.4.0.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 (armv7s): /opt/local/lib/libarmadillo.3.4.0.dylibld: warning: ignoring file /opt/local/lib/libarmadillo.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 (armv7s): /opt/local/lib/libarmadillo.dylib
ignoring file /opt/local/lib/libz.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 (armv7s): /opt/local/lib/libz.dylib
Undefined symbols for architecture armv7s:
"_deflateInit_", referenced from:
_compress_data in libTestFlight.a(tf_compression.o)
"_deflateEnd", referenced from:
_compress_data in libTestFlight.a(tf_compression.o)
"_deflate", referenced from:
_compress_data in libTestFlight.a(tf_compression.o)
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我有什么想法可以解决这个问题吗?
答案 0 :(得分:13)
尝试将libz.lib添加到构建目标:
将libz添加到带有库构建阶段的链接二进制文件
答案 1 :(得分:2)
我最近遇到了类似的问题 - 将犰狳与Xcode联系起来。
我会告诉你我是如何修理它的。 必须采取两个步骤:
1)xcode需要“查看”文件libarmadillo.dylib
(我的,位于/usr/lib/
) - 这与直接使用libarmadillo.3.81.1.dylib
不一样。
为此,请在xcode库(我的/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib/
)上创建指向该文件的链接。
总结:
$ sudo ln -s /usr/lib/libarmadillo.dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib/libarmadillo.dylib
2)现在我需要“告诉”xcode在编译命令中包含这个库。
为此:
TARGETS
(我只有一个......)Build Phases
标签armadillo
上,现在您应该看到前面的库libarmadillo.dylib
,只需添加它! P.S。在使用犰狳的头文件中,我使用完整路径(在我的情况下,#include "/usr/include/armadillo"
)
就是这样, 我希望我能帮助你。