课程作业要用c++连接mysql server,但是出现些小问题,经查阅资料已经解决,做一下笔记。
环境:vs2017, mysql版本是8.0.16-winx64。
设置项目属性
项目 - C/C++ - 常规 - 附加包含目录 里面添加 C:\mysql\mysql-8.0.16-winx64\include。 大家依葫芦画瓢,改成自己的相应目录。
项目 - 配置属性 - 链接器 - 常规 - 附加库目录, 添加C:\mysql\mysql-8.0.16-winx64\lib。 也是要换成自己的目录。
项目 - 配置属性 - 链接器 - 输入 - 附加依赖项 添加libmysql.lib.
其实就是将头文件和库文件包含进来。
测试程序
//下面的代码是一个实现C++连接MYSQL数据库的很好的例子 #include <winsock.h>
#include <iostream>
#include <string>
#include <mysql.h>
using namespace std; #pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libmysql.lib")
//单步执行,不想单步执行就注释掉
#define STEPBYSTEP int main() {
cout << "****************************************" << endl; #ifdef STEPBYSTEP
system("pause");
#endif //必备的一个数据结构
MYSQL mydata; //初始化数据库
if ( == mysql_library_init(, NULL, NULL)) {
cout << "mysql_library_init() succeed" << endl;
}
else {
cout << "mysql_library_init() failed" << endl;
return -;
} #ifdef STEPBYSTEP
system("pause");
#endif //初始化数据结构
if (NULL != mysql_init(&mydata)) {
cout << "mysql_init() succeed" << endl;
}
else {
cout << "mysql_init() failed" << endl;
return -;
} #ifdef STEPBYSTEP
system("pause");
#endif //在连接数据库之前,设置额外的连接选项
//可以设置的选项很多,这里设置字符集,否则无法处理中文
if ( == mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "gbk")) {
cout << "mysql_options() succeed" << endl;
}
else {
cout << "mysql_options() failed" << endl;
return -;
} #ifdef STEPBYSTEP
system("pause");
#endif //连接数据库
if (NULL != mysql_real_connect(&mydata, "localhost", "root", "", "mysql",, NULL, )) //这里的地址,用户名,密码,端口可以根据自己本地的情况更改
{
cout << "mysql_real_connect() succeed" << endl;
}
else {
cout << "mysql_real_connect() failed" << endl;
return -;
} return ;
}
如果能运行,OK!后面的不用看了。
问题
无法解析的外部符号 _mysql_real_connect...
方法一:由于VS建立的项目默认为WIN32 项目,需将平台改为64。设置如下:
(1) 项目—》属性—》配置属性—》配置管理器—》活动解决方案平台,下拉选新建,出现一个新的对号框,在键入选择新平台中选择X64,如下图所示:
(2)不是将C:\mysql\mysql-8.0.16-winx64\lib(安装MySql下的lib文件夹)中的libmysql.dll拷到项目下的Debug文件夹中,而是拷到项目下x64\Debug中(或者C:\Windows\System32中)。重启(必需的)。完毕。。
没有第二步会提示缺少“libmysql.dll”。
参考链接:
1. c++连接mysql并提示“无法解析的外部符号 _mysql_server_init@12”解决方法
2. VS中MFC连接MySQL由于系统不同位(32/64)引起的错误:无法解析的外部符号 _mysql_init@4、_mysql_query
3. 测试代码