2

これをコンパイルしようとしています (mysql c++ コネクタのドキュメントにも記載されています): http://pastebin.com/HLv4zR0r

しかし、これらのエラーが発生します: http://pastebin.com/3t0UbeFy

これは私がコンパイルしようとした方法です:

g++ -o test test.cpp `mysql_config --cflags --libs` -I./include/cppconn -L./lib -lmysqlcppconn-static

実行結果mysql_config --cflags --libsは次のとおりです。

-I/usr/include/mysql -DBIG_JOINS=1  -fno-strict-aliasing  -g
-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -lrt -ldl

編集:

Jonathan Wakely の提案するコマンドを適切な順序のリンカー引数で実行した後、

g++ -o test test.cpp  -I./include/cppconn -L./lib -lmysqlcppconn-static `mysql_config --cflags --libs`

さまざまなエラーが発生します: http://pastebin.com/4EWNgy9i

4

1 に答える 1

0

mysqlcppcon ライブラリは mysqlclient C ライブラリに依存しているため、mysqlclient ライブラリを後に配置する必要があります。 -lmysqlcppconn-static

g++ -o test test.cpp  -I./include/cppconn -L./lib -lmysqlcppconn-static `mysql_config --cflags --libs`

リンカー引数の順序は重要です。リンカーは各ファイルを順番に調べて、そこからシンボルが必要かどうかを判断します。ファイルを確認するまでlibmysqlcppconn-static.aに、すでに libmysqlclient.so ライブラリを確認 (および無視) しており、再度確認するために戻ることはありません。

于 2012-11-12T22:36:29.500 に答える