用codeblocks连接MySQL数据库,运行报错:undefined reference to 'mysql_init@4' error: ld returned 1 exit status

解决方案

转载地址:https://zhidao.baidu.com/question/920083739945748619.html

由于安装的MySQL版本(64位)跟这里Codeblocks(32位)的可能不兼容,
include 还有lib引用都不要使用安装MySQL里的,
用专门的mysql-connector-c-noinstall-6.0.2-win32.zip这个压缩包里的,这个可以自行搜索下载,
下面是原网址作者提供的下载地址,是6.02版本的
http://pan.baidu.com/s/1dDyDom1,
最新版需要在下面的mysql官方网址下载,是c++版本的
如果你的codeblocks是32位的,应该下载32版本。。
mysql支持8.0版本以上,其他的版本你自己去看应该对应什么驱动,
这里不再赘述。
https://dev.mysql.com/downloads/connector/cpp/

原理解释:codeBlock链接方式:

建立MySQL工程方法
了解编程相关的资源文件。MySQL安装路径下的include文件夹存放C语言编译相关的头文件(例如重要的mysql.h),lib文件夹存放相关的静态库(例如重要的opt/libmysql.lib)

注:MySQL Server5.1.41不用添加,MySQL Server5.6需要自行添加以下路径。

使用C语言编程环境(Code::Blocks或Visual C++)建立空白工程。在该工程的编译和链接配置中,首先添加引用路径”%MySQL安装路径%/include/”
其中“%MySQL安装路径%”为MySQL安装路径,在实验中心的计算机上为C:/Program Files/MySQL/include/
例如在Code blocks中,在菜单Project的Build option中,按如下方法添加:用codeblocks连接MySQL数据库,运行报错:undefined reference to 'mysql_init@4' error: ld returned 1 exit status_第1张图片
然后,添加静态库路径 %MySQL安装路径%/lib/
用codeblocks连接MySQL数据库,运行报错:undefined reference to 'mysql_init@4' error: ld returned 1 exit status_第2张图片
最后,添加需要的库文件%MySQL安装路径%/lib/下的库文件libmysql.lib和mysqlclient.lib
用codeblocks连接MySQL数据库,运行报错:undefined reference to 'mysql_init@4' error: ld returned 1 exit status_第3张图片

在程序中必须加入#define LCC,以避免在Windows操作系统下进行编译时产生的错误。然后,在程序中加入#include ,让编译器能够找到所有MySQL Client的函数定义。
随后,使用mysql_init函数准备连接,mysql_init函数的声明为

MYSQL *mysql_init(MYSQL *mysql);

其参数和返回值均为类型为MYSQL的结构体的指针。MYSQL结构体是连接MySQL服务器的句柄,每一个句柄代表程序与MySQL 服务器唯一的连接,所有insert,select,delete等操作都需要MySQL句柄作为参数以识别不同用户、数据库以及程序。若mysql_init操作成功,则返回刚刚初始化的句柄;否则,返回NULL。

运行代码:

#ifndef __LCC__
#define __LCC__
#endif

#include 
#include 

int main(int argc, char **argv)
{
	MYSQL mysql_conn; /* Connection handle */

	if (mysql_init(&mysql_conn) != NULL)
{
		printf("Init succeeds!\n");
	}
else
{
		printf("Init fails!\n");
	}
	return 0;
}

解决后显示:用codeblocks连接MySQL数据库,运行报错:undefined reference to 'mysql_init@4' error: ld returned 1 exit status_第4张图片

你可能感兴趣的:(c,数据库,mysql)