clion环境配置:
windows下:
1. 在CMakeLists.txt里面添加 mysql的include目录和lib目录
cmake_minimum_required(VERSION 3.15) project(pro1) include_directories(D:\\CodeEnv\\mysql\\mysql-5.6.42\\include) //指定头文件目录 link_directories(D:\\CodeEnv\\mysql\\mysql-5.6.42\\lib) //指定链接库目录 link_libraries(libmysql.dll) //指定链接库下具体哪个库 set(CMAKE_CXX_STANDARD 11) add_executable(pro1 main.cpp mysqlTest.cpp mysqlTest.h) target_link_libraries(pro1 libmysql.dll) //自己添加
可以添加本地安装的mysql的对应路径来引入头文件
也可以在 https://dev.mysql.com/downloads/connector/cpp/ 下载C++ connector,解压后将里面的include和lib目录添加到上面的cmakelists.txt
【lib目录下的libmysql.lib文件很小,而libmysql.dll文件很大,可能lib文件里面只有相应函数的声明,而实际的实现在dll文件里,因此上面要指定动态库dll文件】
配置不对会出现的错误:
(1)运行时找不到动态库
返回错误:-1073741515 (0xC0000135)
解决办法:①windows下默认去system32路径下去找动态库,可将 libmysql.lib和libmysql.dll放到该目录下去(实测只需要dll文件)
②运行时指定环境变量为mysql的lib目录:
(2)运行时错误
返回:-1073741819 (0xC0000005)
原因:指定链接库时没写成 libmysql.dll ,只写了 libmysql,具体原因未知
2. 例子
file.cpp
#include <winsock.h> //这个不加,编译不通过 #include "mysql.h" void TestMysql() { MYSQL *my; // mysql_library_init(0,NULL,NULL); //不加没问题 my=mysql_init(NULL); char ip[]="127.0.0.1"; char user[]="root"; char pass[]="123"; char database[]="testx"; int port = 3306; if(mysql_real_connect(my,ip,user,pass,database,port,NULL,0)) { cout<<"connect success"<<endl; } else { cout<<"connect failed"<<endl; return; } MYSQL_RES* result; MYSQL_ROW row; int num,i; if((mysql_query(my,"select * from person")) == 0) { cout<<"query success"<<endl; } result = mysql_store_result(my); num = mysql_num_fields(result); while(row=mysql_fetch_row(result)) { for(i=0;i<num;i++) { cout<<row[i]<<" "; } cout<<endl; } mysql_free_result(result); mysql_close(my); }
linux环境下:
----------------------------------------------------------------------
vs
1.