【问题标题】:MySQL Connector/C++ Library Linking ERROR ProblemMySQL 连接器/C++ 库链接错误问题
【发布时间】:2009-09-20 06:34:52
【问题描述】:

问题:

好的,我一直在尝试遵循 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

代码:

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 的说明。我的问题是设置实际环境,以便正确连接到库,本教程帮助极大!

【问题讨论】:

    标签: c++ mysql linker mysql-connector


    【解决方案1】:

    您必须先更改您的代码:

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

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

    Properties->Linker->General-> Additionnal Libraries
    

    在这里添加你的库的路径。

    【讨论】:

      【解决方案2】:

      一个快速的谷歌搜索表明你的行应该是:

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

      【讨论】:

      • 好吧,我已经尝试过了,但仍然出现以下链接错误 1>main.obj : error LNK2019: unresolved external symbol "_declspec(dllimport) class sql::mysql: :MySQL_Driver * __cdecl sql::mysql::get_mysql_driver_instance(void)" (__imp?get_mysql_driver_instance@mysql@sql@@YAPAVMySQL_Driver@12@XZ) 在函数_main中引用
      • 链接错误表明您显然没有链接到正确的库。
      【解决方案3】:

      错误是编译器错误。它抱怨在指定的命名空间中找不到 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'
      

      它会显示你的头文件,你可以在那里搜索以确保该函数存在。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-14
        • 2016-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多