C++ / Mysql 连接器:对“get_driver_instance”的未定义引用

C++ / Mysql Connector : undefined reference to `get_driver_instance'

提问人:Touki 提问时间:9/22/2011 更新时间:8/31/2015 访问量:5978

问:

我在这个论坛上找到了一些关于相同错误的主题,但我没有找到解决方案。

我正在尝试在Ubuntu 11.04上制作C++和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"

提前感谢大家

东木

C++ MySQL 未定义引用 连接器

评论

0赞 Mat 9/22/2011
你是如何编译/链接的?

答:

0赞 johannes 9/22/2011 #1

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

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

评论

0赞 Touki 9/22/2011
谢谢,问题仍然存在 现在: <pre>undefined reference to 'sql::mysql::get_driver_instance()'</pre> 如果我检查: /usr/include/cppconn 文件 driver.h 包含: /* namespace sql */ extern “C” { CPPCONN_PUBLIC_FUNC sql::D river * get_driver_instance(); }有什么想法吗?
0赞 johannes 9/22/2011
在我的代码中,我包括 driver/mysql_public_iface.h 和 driver/mysql_driver.h .。然后:你的链接器/编译命令是什么?
0赞 Touki 10/26/2011
我不需要包含其他文件。我只是手动重新安装mysql_connector而不是apt-get方式。并且存在兼容性问题,因此我不得不更改使用的默认cpp库或用另一个库重新编译mysql_connector。
-1赞 jespinoza 8/31/2015 #2
LIBPATH = -L/usr/lib/ -lmysqlcppconn -lmysqlclient_r