22

はい、この質問は以前に尋ねられました...以前の回答に記載されているすべてを試しました。私のセットアップは非常に簡単なので、これはそれほど難しいことではありません。

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'

いくつかの詳細:

  • 'firsttry.cpp'は、私がソース コード ファイルに名前を付けたものであり、これも公式の例からそのまま引用したものです。
  • ご覧のとおり、 mysqlclientライブラリとmysqlcppconnライブラリにリンクしています。この質問が以前に何度も尋ねられたとき、答えはそれらをリンクすることでした。
  • 他のいくつかの歴史的な回答は、サンプル ソース コードが間違っていて、問題の関数が sql::mysql 名前空間などにある必要があることを示唆しています。ソース コードに問題はないと確信しています。繰り返しになりますが、コンパイルされますが、ソース コードの名前空間を変更すると、さらに悪化するようです。

あなたが提供できる助けを前もって感謝します。

4

4 に答える 4

31

それで、私は今この問題を1週間抱えており、それにも非常に不満を感じています. 私はたった今、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

これは私にとってはうまくいきました。問題の解決に役立つことを願っています!

于 2013-04-15T00:13:10.793 に答える
2

すべてのパスが含まれている場合は、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 を使用して調べるか、詳しく説明するように依頼してください。

于 2013-11-12T09:11:07.893 に答える