我经常使用mysql c api,因此将它们链接到我的c项目中,开发了unter xcode。
昨天我试图建立一个静态库来封装一些数据库函数。
但是如果我尝试构建lib,就会出现一些奇怪的错误:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: can't locate file for: -lm
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: -lm is not an object file (not allowed in a library)
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: can't locate file for: -lz
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: -lz is not an object file (not allowed in a library)
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool failed with exit code 1
要在xcode下包含mysqllib,必须将以下行添加到build set-ip“other linker flags”:
-lmysqlclient -lm -lz
据我所知,xcode无法在静态库中使用此链接器标志。
使用正常的命令行程序,它工作正常,我使用它多年。
有没有人提示我如何处理这个问题?
提前致谢
solick
答案 0 :(得分:1)
我在XCode 5上遇到类似的错误,同时用更新的iOS7就绪版本替换旧的外部库。
ie:
...can't locate file for: -l
...is not an object file (not allowed in a library)
在将库搜索路径插入 project.pbxproj 时,我发现Xcode5错误地转义了双引号。
ie:
incorrect behaviour ---> "\\\"/path/library/\\\"", (note: 3 slashes)
correct behaviour ----> "\"/path/library/\"", (note: 1 slash)
的溶液强> 的
打开 project.pbxproj 并快速搜索和替换我的问题。
ie: search(\\\) replace with (\)
答案 1 :(得分:0)
解决了我的问题:在主程序中包含了mysql lib,这对我有用。