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同級目錄
在這里插入圖片描述

8. 效果

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM