0

私はしばしばmysql c apiを使用しているため、それらをxcodeで開発された私のcプロジェクトにリンクしています。

昨日、いくつかの db 関数をカプセル化するために静的ライブラリを構築しようとしました。

しかし、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 はスタティック ライブラリ内でこのリンカ フラグを使用できません。

通常のコマンド ライン プログラムでは正常に動作し、何年も使用しています。

この問題に対処する方法を教えてくれる人はいますか?

前もって感謝します

ソリック

4

2 に答える 2

1

古い外部ライブラリを新しい iOS7 対応バージョンに置き換える際に、XCode 5 で同様のエラーが発生します。

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 (\)
于 2013-09-26T04:41:42.700 に答える