Visual Studio 2017 Linux ( VisualGDB + centOS)环境下连接Mysql的方法 (undefined reference to `mysql_init')

本文详细介绍了如何在C++环境中配置并使用MySQL数据库,包括安装mysql-devel包、查找mysql.h头文件、解决链接错误以及在Visual Studio中设置链接器选项。通过示例代码展示了如何建立数据库连接、执行SQL查询。

1 首先要安装mysql 和 mysql-devel

  mysql就不说了,安装mysql-del的命令如下 yum install mysql-devel

2 再来要在cpp里面找到到头文件mysql.h

先用命令查看安装的位置 find / -name mysql.h

会看到很多个,配合VisualGDB的设置找一个就行了,例如我使用的是

/usr/include/c++/4.8.5/mysql 下的

 

只要在cpp文件中找得到就行了

运行后,会出现报错信息

undefined reference to `mysql_init'

undefined reference to `mysql_real_connect'

undefined reference to `mysql_query'

undefined reference to `mysql_close'

这几个信息是同一个意思,就是头文件里的mysql_init等方法找不到实现类,找不到 mysqlclient。

这时候,回到CentOs输入 mysql_config,会显示mysql连接还需要的命令

其中我们需要的就是

-L/usr/local/mysql/lib -lmysqlclient -lpthread -lm -lrt -ldl

(只写lmysqlclient也可以: -L/usr/local/mysql/lib -lmysqlclient)

然后我们进入Visual Studio

在项目名称按右键,点击properties,找到Linker的Command Line,在Additional Options的地方输入上面那一行就行了

最后运行测试,首先在mysql里新建一个test数据库,然后建一个student表,这里的登录账号密码都是root

CREATE TABLE `student` (
  `name` varchar(255) DEFAULT NULL,
  `pwd` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

最后运行测试的cpp文件,在student表里写入一条数据zhangsan 123

#include <mysql/mysql.h>
#include <iostream>
#include <string>
using namespace std;
int main()
{
	MYSQL conn;
	int res;
	mysql_init(&conn);
	if (mysql_real_connect(&conn, "localhost", "root", "root", "test", 0, NULL, CLIENT_FOUND_ROWS)) //"root":数据库管理员 "":root密码 "test":数据库的名字
	{
		cout << "connect success!" << endl;
		res = mysql_query(&conn, "insert into student values('zhangsan','123')");//在student表插入一条数据
		if (res)
		{
			cout << "error!" << endl;
		}
		else
		{
			cout << "OK!" << endl;
		}
		mysql_close(&conn);
	}
	return 0;
}

控制台输出

connect success!
OK!

查询数据库写入资料成功

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值