2011-09-22 139 views
3

我发现这个论坛上有关同一个错误的一些主题,但我没有找到解决方案。C++/Mysql连接器:未定义的参考`get_driver_instance'

我想让工作C++ & Ubuntu 11.04上的Mysql连接器。 我的错误的是(以下MySQL官方教程后)

/tmp/ccDmH4pd.o: In function `main': 
mysql.cpp:(.text+0xb): undefined reference to `get_driver_instance' 
collect2: ld returned 1 exit status 

这里是我的代码:

int main(){  
    sql::Driver*  driver; // Create a pointer to a MySQL driver object 
    sql::Connection* dbConn; // Create a pointer to a database connection object 
    sql::Statement*  stmt; // Create a pointer to a Statement object to hold our SQL commands 
    sql::ResultSet*  res; // Create a pointer to a ResultSet object to hold the results of any queries we run 

    driver = get_driver_instance(); 
    dbConn = driver->connect(server, username, password); 


     delete dbConn; 
     return 0; 
    } 

这里是我包括:事先大家

#include "mysql_driver.h" 
#include "mysql_connection.h" 

// Include the Connector/C++ headers 
#include "cppconn/driver.h" 
#include "cppconn/exception.h" 
#include "cppconn/resultset.h" 
#include "cppconn/statement.h" 

感谢

Touki

+0

你是如何编译/链接? – Mat

回答

0

get_driver_instance()函数不在全局命名空间中,而是在:: sql :: mysql中。所以,你必须使用正确的名称:

::sql::Driver *driver = ::sql::mysql::get_driver_instance(); 
+0

谢谢, 的问题仍然存在,与现在:

undefined reference to 'sql::mysql::get_driver_instance()'
如果我检查:/ usr/include目录/ cppconn 文件driver.h包含: /*命名空间中SQL */ 的extern “C” { \t CPPCONN_PUBLIC_FUNC sql :: Driver * get_driver_instance(); } 任何想法? – Touki

+0

在我的代码中,我包含了driver/mysql_public_iface.h和driver/mysql_driver.h ..然后:你的链接器/编译命令是什么? – johannes

+0

我不需要包含其他文件。我只是手动重新安装mysql_connector而不是apt-get方式。并且存在兼容性问题,所以我必须更改使用的默认cpp库或者用另一个重新编译mysql_connector。 – Touki

-1
LIBPATH = -L/usr/lib/ -lmysqlcppconn -lmysqlclient_r