从 C++ 连接 MySQL:错误 LNK2001:未解析的外部符号 [重复]

Posted

技术标签:

【中文标题】从 C++ 连接 MySQL:错误 LNK2001:未解析的外部符号 [重复]【英文标题】:Connecting MySQL from C++: error LNK2001: unresolved external symbol [duplicate] 【发布时间】:2014-07-01 18:56:51 【问题描述】:

我的问题是当我尝试从 C++ 连接到 mysql 时。我已经看过http://www.mysql.com/ 页面并且我已经阅读了文档。我下载了带有 C/C++ 连接器的 MySQL 客户端。我有 Windows 7。我在 Visual Studio 2013 中的项目配置是:

属性->C/C++->附加包含目录:

C:\Program Files\MySQL\MySQL Server 5.6\include
C:\Program Files\MySQL\MySQL Connector C 6.1.3\include
C:\Program Files\MySQL\Connector C++ 1.1.3\include
C:\Users\Darek\Desktop\Anglia\boost_1_55_0

属性->链接器->常规->附加库目录:

C:\Program Files\MySQL\Connector C++ 1.1.3\lib\opt
C:\Program Files\MySQL\MySQL Connector C 6.1.3\lib
C:\Program Files\MySQL\MySQL Server 5.6\lib

属性->链接器->输入->附加依赖:

mysqlcppconn-static.lib
libmysql.lib
mysqlcppconn.lib
mysqlclient.lib

属性->C/C++->预处理器->预处理器定义:

WIN32
NDEBUG
_CONSOLE
_LIB
CPPCONN_PUBLIC_FUNC=

我的项目代码是:

#include <stdlib.h>
#include <iostream>
#include "mysql_connection.h"
#include "mysql_driver.h"
#include <cppconn\driver.h>
#include <cppconn\exception.h>
#include <cppconn\resultset.h>
#include <cppconn\statement.h>
using namespace std;
int main()

    sql::mysql::MySQL_Driver *driver;
    sql::Connection *con;
    sql::Statement *stmt;
    sql::ResultSet *res;
    driver = sql::mysql::get_mysql_driver_instance();  //In this line is error
    //con = driver->connect("tcp://127.0.0.1:3306", "root", "root");
    return 0;

当我编译这个项目时出现错误:

1>main.obj:错误 LNK2001:无法解析的外部符号“类 sql::mysql::MySQL_Driver * __cdecl sql::mysql::get_driver_instance(void)" (?get_driver_instance@mysql@sql@@YAPAVMySQL_Driver@12@XZ)

你知道如何解决这个错误吗? 请帮忙。 感谢您的帮助。

【问题讨论】:

您的目标平台是 32 位还是 64 位? 可以通过在网上搜索“mysql get_driver_instance”找到答案。我就是这么做的。 看我的帖子:***.com/questions/7127284/… 我的平台是 64 位的。 Windows 7 64 位。 感谢 Thomas Matthews 的评论。但是我在网上搜索“mysql get_driver_instance”和另一个,但我没有t find solution of my problem. I found similar problems ,I made steps from them but problem still exists. Maybe I wasnt 搜索得足够好但是......请寻求帮助。 【参考方案1】:

我没有使用mysqlclient.lib.

这是我的预处理器定义:

WIN32
WINVER=0x0400
__WXMSW__
_WINDOWS
wxUSE_GUI1
_DEBUG
__WXDEBUG__
_CRT_SECURE_NO_DEPRECATE
_CRT_NONSTDC_NO_DEPRECATE
CPPCONN_PUBLIC_FUNC=
HAVE_INT8_T=1
mysqlcppconn_EXPORTS

我也在使用 UNICODE 设置。

您可能需要下载连接器源代码并使用您的设置重新构建它。

根据我上面的评论,在网上搜索“mysql get_driver_instance”,你应该在上面确认我上面的设置。

我在 Windows 7 上使用 Visual Studio 2010 Professional,在 Windows Vista 上使用 Visual Studio 2008。这些设置适用于两个平台。

编辑 1: 如果您在 *** 中搜索“mysql Thomas Matthews”,您会发现我的帖子与您的非常相似。

【讨论】:

感谢托马斯的回复。我从 Additional Dependencies 中丢弃了 mysqlclient.lib 并更改了您的定义上的预处理器定义,但我仍然有同样的错误。你说“下载连接器源”,我在哪里可以下载它?你的意思是从源代码安装连接器 c++ 吗?来自 www.mysql.com 页面?还是其他? 我不懂人。我在网络搜索引擎(Google)中输入了“mysql connector c++”,第一项是“MySql Connector C++ download”。你下一步怎么做?我点击它进入下载页面。转到底部,在平台的下拉框中,选择“源代码”。

以上是关于从 C++ 连接 MySQL:错误 LNK2001:未解析的外部符号 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

LNK2001静态属性和方法错误(Qt,C++)[重复]

VISUAL C++调试时出现LNK2001 与 LNK1120错误

C++ 覆盖虚方法抛出错误“LNK2001: unresolved external symbol”

C++学习(四五四)LNK2001 LNK2019区别

包含标头时的 C++ OpenGL LNK2001

c++程序错误error LNK2001: unresolved external symbol "public: void __thiscall CEmp::print(void)&quo