C++ / Mysql 连接器:undefined reference to `get_driver_instance'。

3
我在这个论坛上找到了一些关于同样错误的主题,但我没有在其中找到解决方案。
我正在尝试让C++和Mysql Connector在Ubuntu 11.04上工作。 在按照官方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。

你是如何编译/链接的? - Mat
2个回答

0

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

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

问题仍然存在: <pre>undefined reference to `sql::mysql::get_driver_instance()'</pre>如果我检查:/usr/include/cppconn文件driver.h包含: / * namespace sql * / extern "C" { CPPCONN_PUBLIC_FUNC sql :: Driver * get_driver_instance(); }有什么想法吗? - Touki
在我的代码中,我包含了driver/mysql_public_iface.h和driver/mysql_driver.h..然后:你的链接器/编译命令是什么? - johannes
我不需要包含其他文件。我只是手动重新安装了mysql_connector,而不是使用apt-get方式。由于存在兼容性问题,所以我不得不更改默认的cpp库或者重新编译mysql_connector使用另一个库。 - Touki

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接