はい、この質問は以前に尋ねられました...私は以前の回答で述べられたすべてを試しました。私のセットアップは本当に簡単なので、これはそれほど難しいことではありません。
C++を使用してmysqlに対してプログラミングしたいだけです。私のソースコードは、「hello world」タイプの例から逐語的に取得されています。
http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-examples-complete-example-1.html
私はUbuntu 12.10を使用しています。やっています:
g++ -Wall -o firsttry_prog -I/usr/include/mysqlcppconn -I/usr/local/boost_1_53_0 -L/usr/lib/x86_64-linux-gnu -l:libmysqlclient_r.so.18 -L/usr/lib/mysqlcppconn -lmysqlcppconn firsttry.cpp
コンパイルしますが(-cオプションを使用した場合)、ビルドされません。
/tmp/ccn768hj.o: In function `main':
firsttry.cpp:(.text+0x3a): undefined reference to `get_driver_instance'
いくつかの詳細:
あなたが提供できるあらゆる助けを前もってありがとう。
だから私は今一週間この問題を抱えており、私もそれで非常にイライラしました。ようやく、mysqlへのログイン以外に何もしないプログラムをようやく構築することができ、文字通り喜びの声を上げました。ここに私が持っているものがあり、それが役に立てば幸いです。
私は最初にソースからc ++コネクタライブラリをコンパイルしましたが、しばらくして何か問題があると思ったので、aptを使用してそれを取得しました:
Sudo apt-get install libmysqlcppconn-dev
そして、ここに私の簡単なテスターソースファイル「tester.cpp」があります。
#include <stdlib.h>
#include <iostream>
#include <mysql_connection.h>
#include <driver.h>
#include <exception.h>
#include <resultset.h>
#include <statement.h>
using namespace sql;
int main(void){
sql::Driver *driver;
sql::Connection *con;
driver = get_driver_instance();
con = driver->connect("tcp://127.0.0.1:3306","root","YOURPASSWORD");
return 0;
}
そして最後にg ++コンパイルコマンド:
Sudo g++ -Wall -I/usr/include/cppconn -o testapp tester.cpp -L/usr/lib -lmysqlcppconn
これは私にとってうまくいきました、そしてあなたの問題を解決するのに役立つことを願っています!
私にとっては、最後の2つの引数の順序を交換するだけでこの問題が解決しました。理由はわかりませんが、ソースファイルの後の最後にget_driver_instance
オプションを指定すると、リンカは関数-lmysqlcppconn
を見つけることができます。
g++ -Wall -o firsttry_prog -I/usr/include/mysqlcppconn -L/usr/lib/mysqlcppconn firsttry.cpp -lmysqlcppconn
また、次のオプションは冗長だと思うので、取り除いた。
-I/usr/local/boost_1_53_0 -L/usr/lib/x86_64-linux-gnu -l:libmysqlclient_r.so.18
あなたが私と同じくらい忘れっぽくて、CMakeLists.txtでライブラリをリンクしなかった場合:
target_link_libraries(<target> mysqlcppconn)
すべてのパスが含まれている場合は、param -Iをスローします。次のようにコンパイルすると、問題があるかどうかがわかります。
g++ -g -o0 -I/usr/local/include -I/usr/local/boost/include -c main.cpp -o main.o
g++ -g -o0 -L/usr/local/lib -L/usr/local/mysql/lib -lmysqlcppconn main.o -o test
問題が表示されます:
main.o: In function `main':
/home/huangxw/workspace/public/soal/test/main.cpp:165: undefined reference to `get_driver_instance'
collect2: ld returned 1 exit status
次に、-lmysqlcppconn
とmain.o
の順序を調整する必要があります。
g++ -g -o0 -I/usr/local/include -I/usr/local/boost/include -c main.cpp -o main.o
g++ -g -o0 -L/usr/local/lib -L/usr/local/mysql/lib main.o -o test -lmysqlcppconn
以上です!!理由は簡単です。 Webを使用して調べるか、詳しく説明してください。