VSCode+Code Runner C++添加静态依赖库连接Mysql
以连接Mysql所需的依赖库为例
1. 为插件添加头文件目录,不然语法检查提示错误
2. 项目根文件夹命名有空格,在根文件夹下有bin、include、lib、src三个文件夹
3. include下创建头文件a.cpp,内含
#ifndef DAtACONNECTION_H_
#define DAtACONNECTION_H_
#include <bits/stdc++.h>
#include <WinSock.h> //一定要包含这个
#include <mysql.h>
#include <string>
const int cmdSize = 10000000;
class DataConnection
{
private:
MYSQL_RES *res = NULL;
MYSQL_ROW column = NULL;
char query[5000];
MYSQL mysql;
public:
bool connectDataBase();
};
#endif
4. src下创建a.cpp
#include "a.hpp"
bool DataConnection::connectDataBase()
{
mysql_init(&mysql);
const char host[] = "127.0.0.1";
const char user[] = "root";
const char passwd[] = "root";
const char db[] = "managework";
unsigned int port = 3306;
const char *unix_socket = NULL;
unsigned long client_flag = 0;
if (mysql_real_connect(&mysql, host, user, passwd, db, port, unix_socket, client_flag))
{
mysql_query(&mysql, "set names gbk");
return true;
}
else
{
return false;
}
}
5. lib一般是为vc提供的库,但可以转化为.a的g++的库格式,这是参考文章Windows下用GCC连接MySQL数据库_靠谱-ing-CSDN博客
6. 修改项目工程文件(.code-workspace)
因为想的是单独命令编译,不使用makefile,所以试了下通配符,有的版本的编译器可能不支持
{
"folders": [
{
"path": "test space"
}
],
"settings": {
"code-runner.executorMap": {
# 本人用的windows,部分路径需要用\并转义\\。
# 本人用的g++编译器C++语言,编译器指令与gcc基本类似
# -I (大写i) 增加 include 目录
#-l (小写L) 增加静态库目录
#-ld (小写L) 增加动态库目录
"cpp": "cd $dir && g++ -I \"E:/Desktop/test space/include\" -I \"D:/Mysql/mysql-8.0.16-winx64/include\" .\\\\*.cpp -L \"E:/Desktop/test space/lib\" -lmysql -o ..\\bin\\$fileNameWithoutExt.exe && ..\\bin\\$fileNameWithoutExt.exe"
# 注释如果在上边会失效,不晓得为啥
# 生成文件名指定的有时很迷,有时有后缀有时没后缀,所以直接指定和运行都加上.exe
# 数据库路径为D:/Mysql/mysql-8.0.16-winx64
# 数据库头文件D:/Mysql/mysql-8.0.16-winx64/include
# 因为需要将.lib转化为.a格式,所以我把转化后的库放在了E:/Desktop/test space/lib
# .\\\\*.cpp为当前目录下的所有.cpp文件
# 我用的windows系统,记得转化下路径
},
"files.associations": {
"ostream": "cpp"
}
}
}
7. 当前的项目目录
因为它本身依赖的还有动态依赖库libmysql.dll,所以把libmysql.dll放到.exe同级目录