MySQL Connector / C ++ Library链接ERROR问题

时间:2009-09-20 06:34:52

标签: c++ mysql linker mysql-connector

问题:

好的,我一直在尝试按照MySQL Forge Wiki和其他一些提供如何获得简单数据库连接的教程的网站上的示例代码,但出于某种原因,我的项目总是因链接错误而失败我无法弄清楚为什么或如何自己修复它(我还在学习)。请帮我!我已经在项目属性中包含了头文件所需的路径目录,并提供了MySQL Connector / C ++中使用的lib文件的路径目录。我正在使用的代码如下,如果有人可以给我一个有用的提示/评论如何解决它。我认为它与连接到lib文件有关(因为链接错误),但我不知道解决它的解决方案。有没有其他人有这样的麻烦?

http://forge.mysql.com/wiki/Connector_C++ http://dev.mysql.com/tech-resources/articles/mysql-connector-cpp.html#createdb

CODE:

int main() {
    // do something
    sql::mysql::MySQL_Driver *driver;
    sql::Connection *con;
    sql::Statement *stmt;
    sql::ResultSet *res;
    sql::PreparedStatement *pstmt;

    cout << "Starting Driver Instance" << endl;
    driver = sql::mysql::MySQL_Driver::get_mysql_driver_instance();

    return 0;
}

错误输出:

1>------ Build started: Project: test, Configuration: Debug Win32 ------
1>Compiling...
1>main.cpp
1>c:\users\josh bradley\documents\visual studio 2008\projects\test\test\main.cpp(28) : error C2039: 'get_mysql_driver_instance' : is not a member of 'sql::mysql::MySQL_Driver'
1>        c:\program files\mysql\mysql connector c++ 1.0.5\include\mysql_driver.h(25) : see declaration of 'sql::mysql::MySQL_Driver'
1>c:\users\josh bradley\documents\visual studio 2008\projects\test\test\main.cpp(28) : error C3861: 'get_mysql_driver_instance': identifier not found
1>Build log was saved at "file://c:\Users\Josh Bradley\Documents\Visual Studio 2008\Projects\test\test\Debug\BuildLog.htm"
1>test - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

更新:

我只是想让大家知道我终于找到了解决问题的方法。对于有类似问题的人,请转到http://blog.ulf-wendel.de/?p=215#hello并阅读有关如何动态连接到mysqlcppconn.lib的说明。我的问题是设置实际环境,以便正确连接到库,本教程帮助极大!

3 个答案:

答案 0 :(得分:3)

您必须先更改代码:

driver = sql::mysql::get_mysql_driver_instance();

接下来,您必须使用mysqlclient.lib链接您的代码 在项目中添加lib mysqlclient.lib 的正确路径:

Properties->Linker->General-> Additionnal Libraries

这里添加了lib的路径。

答案 1 :(得分:1)

快速谷歌搜索建议你的行应该是:

driver = sql::mysql::get_mysql_driver_instance();

答案 2 :(得分:0)

错误是编译器错误。它抱怨它无法在指定的命名空间中找到get_mysql_driver_instance()。

尝试双击该行:

1>        c:\program files\mysql\mysql connector c++ 1.0.5\include\mysql_driver.h(25) : see declaration of 'sql::mysql::MySQL_Driver'

它将显示头文件,您可以在那里搜索以确保该功能存在。

相关问题