从 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 wasn
t 搜索得足够好但是......请寻求帮助。
【参考方案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:未解析的外部符号 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
VISUAL C++调试时出现LNK2001 与 LNK1120错误
C++ 覆盖虚方法抛出错误“LNK2001: unresolved external symbol”
c++程序错误error LNK2001: unresolved external symbol "public: void __thiscall CEmp::print(void)&quo