在静态库中链接Mysqllib(MAC OS X.8.4,Xcode 4.6.3)

时间:2013-08-22 06:54:27

标签: mysql c xcode macos api

我经常使用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

2 个答案:

答案 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,这对我有用。