补档

编写于2021.3.10 C语言课程设计期间

1.由于找不到libmysql.dll/由于找不到libssl-1_1-x64.dll,无法继续执行代码

在项目属性页的“配置属性”-“调试”-“环境” 中编辑,把环境设置为数据库的bin文件夹即可,注意末尾分号要用半角的。

PATH=C:\Program Files\MySQL\MySQL Server 8.0\bin;

PS:必须是bin!!!否则提示找不到libmysql.dll/由于找不到libssl-1_1-x64.dll

2.把libmysql.lib和libmysql.dll两个文件复制粘贴到

..\ConsoleApplication3\ConsoleApplication3路径下(ConsoleApplication3为项目名称)

注意VS2017中“调试“和”生成“是两个不同体系的调试器,需要分别进行以上两步配置!

3.

1)若生成的(.exe)可执行文件运行时提示找不到libmysql.dll,则把该文件放在可执行文件目录即可;

2)若生成的(.exe)可执行文件运行时提示找不到libcrypto-1_1-x64.dll,不要在网上下载该文件,否则会报错道:无法定位程序输入点,程序找不到入口。原因是从网上下载的dll和mysql的bin目录中的dll虽然名字相同,但是dll内部的日期等参数不同,出现冲突,程序找不到入口,无法运行。正确的打开方式为:在mysql的Server目录下查找libcrypto-1_1-x64.dll文件,并把该文件复制到可执行文件目录或系统dll目录下。(注意区分32/64位系统)

4.检查链接器——>>输入

附加依赖项:libmysql.lib

(不用设置也可,把libmysql.lib文件放在可执行文件目录即可)

另附一段可正常运行的测试代码:

#include <WinSock2.h>
#include <stdio.h>
#pragma comment(lib,"libmysql")
#include <mysql.h>
#define HOST "localhost"       //在本机上不要写IP
#define USERNAME "root"
#define PASSWORD "20011216"
#define DBNAME "mysql"      //安装MySQL初始化的默认表

MYSQL mysql;                       
MYSQL_RES *res;                  //结果集
MYSQL_ROW row;                //结果集的单位字段

int main() {

// 初始化MYSQL变量 
	if (NULL != mysql_init(&mysql))
		printf("init succeed!\n");
	else
	{
		printf("init failed!\n");
		return -1;
	}
	
 // 连接Mysql服务器,本例使用本机作为服务器。访问的数据库名称为"msyql",参数中的user为你的登录用户名,***为登录密码,需要根据你的实际用户进行设置
	if (!mysql_real_connect(&mysql, HOST, USERNAME, PASSWORD, DBNAME, 3306, NULL, 0))
	{
		printf("connect failed!\n");
		return -1;
	}
	else
		printf("connect succeed!\n");
		
 // 查询mysql数据库中的user表
	if (mysql_real_query(&mysql, "select * from user", (unsigned long)strlen("select * from user")))
	{
		printf("mysql_real_query failure!\n");
		return -1;
	}
	
// 存储结果集
	res = mysql_store_result(&mysql);

	if (NULL == res)
	{
		printf("mysql_store_result failure!\n");
		return -1;
	}
	
// 重复读取行,并输出第一个字段的值,直到row为NULL
	while (row = mysql_fetch_row(res))
	{
		printf("%s", row[0]);
	}
	
// 释放结果集
	mysql_free_result(res);
	
// 关闭Mysql连接
	mysql_close(&mysql);
	printf("\nclose succeed!\n");
	return 0;
}

A Student on the way to full stack of Web3.