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

21 篇文章 0 订阅
15 篇文章 0 订阅

解决方案

转载地址: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中,按如下方法添加:在这里插入图片描述
然后,添加静态库路径 %MySQL安装路径%/lib/
在这里插入图片描述
最后,添加需要的库文件%MySQL安装路径%/lib/下的库文件libmysql.lib和mysqlclient.lib
在这里插入图片描述

在程序中必须加入#define LCC,以避免在Windows操作系统下进行编译时产生的错误。然后,在程序中加入#include <mysql.h>,让编译器能够找到所有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 <stdio.h>
#include <mysql.h>

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;
}

解决后显示:在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值