我是C ++的新手。我试图在C ++程序中使用MySQL复制来从MySQL读取binlog。
我从Internet获取了头文件和.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
)编译我的程序时,我正在尝试调用所有方法的错误未定义引用。见下文:
/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
构建库,但没有运气。
可以猜出这可能是什么问题吗?我想我错过了一些基本的东西。
答案 0 :(得分: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