是的,这个问题之前已经被问过......我已经尝试了前面答案中提到的所有内容。我的设置非常简单,所以这不应该那么难。
我只想使用 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 命名空间等中。我很确定源代码是好的。同样,它可以编译,并且更改源代码中的命名空间似乎会使情况变得更糟。
提前感谢您提供的任何帮助。
最佳答案
所以我现在这个问题已经有一个星期了,我也对此感到非常沮丧。我刚刚终于能够构建一个除了登录 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
这对我有用,我希望它可以帮助您解决问题!
关于C++/mysql 连接器 - 对 get_driver_instance 的 undefined reference - 已经尝试过简单的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15995319/