0

我是 C++ 新手。我正在尝试在 C++ 程序中使用 MySQL 复制从 MySQL 读取二进制日志。

.cpp从 Internet 获得了头文件和源文件。现在我已经将头文件放在文件/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时,对于我试图调用的所有方法,我都会收到未定义的对错误的引用。见下文:

/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 回答