0

私はC++が初めてです。MySQL からバイナリログを読み取るために、C++ プログラムで MySQL レプリケーションを使用しようとしています。

.cppインターネットからヘッダーファイルとソースファイルを入手しました。これで、ヘッダー ファイルをフォルダーに配置し、それを指すように/usr/include/mysqlパスを設定しました。CPLUS_INCLUDE_PATHヘッダーファイルを使用できます。また、.cppファイルを/usr/lib64/mysqlフォルダに配置し、すべてのファイルをコンパイルして同じディレクトリに.cppファイルを作成しました。.o

しかし、g++( g++ -I/usr/include/mysql -L/usr/lib64/mysql/ -g bin_log.cpp -o bin_log.out) を使用してプログラムをコンパイルすると、呼び出しようとしているすべてのメソッドに対して Undefined Reference to エラーが発生します。下記参照:

/home/oracle/MySQL_To_Db2_Replication/bin_log.cpp:17:
undefined reference to `mysql::system::create_transport(char const*)
undefined reference to `mysql::Binary_log::Binary_log(mysql::system::Binary_log_driver*)'
undefined reference to `mysql::Binary_log::connect()'
undefined reference to `mysql::Binary_log::wait_for_next_event(mysql::Binary_log_event**)'
undefined reference to `mysql::Binary_log::get_position()'

また、コンパイル中に .so ファイルを作成してリンクしようとしましたが、機能しません。(私は使用しg++ -I/usr/include/mysql -L/usr/lib64/mysql/binlogapi.so -g bin_log.cpp -o bin_log.outました)。

を使用してライブラリを構築しようとしましcmakeたが、うまくいきませんでした。これで何が問題になるのか、誰でも推測できますか?私は基本的な何かが欠けていると思います。

4

1 に答える 1

0

あなたはそれを間違っています。

リンク先のライブラリは、それらを必要とするオブジェクトのに来る必要があるためlibbinlogapi.so、ファイルの後にリンク先のコマンドを配置.cppします。また、MySQL クライアント API に依存するlibmysqlclient.soため、通常は と呼ばれるそれにもリンクする必要があるため、このようなもの:

g++ -I/usr/include/mysql -L/usr/lib64/mysql/ -g bin_log.cpp -o bin_log.out -lbinlogapi.so -lmysqlclient
于 2013-08-01T12:54:24.400 に答える