使用Visual Studio 2022 建立lib和dll並使用

2023-12-13 12:00:51

對於一個經常寫javaWeb的人來說,使用Visual Studio似乎沒什麼必要,但是對於使用ffi的人來說,使用c或c++編譯器,似乎是必不可少的,下面我將講述如何用Visual Studio 2022 來建立lib和dll,並使用。

靜態庫的建立並使用

首先開啟Visual Studio 2022,點選建立新專案。

選擇靜態庫,然後點選下一步。

點選建立。

Visual Studio 2022會自動生成以下程式碼:

然後開啟專案屬性,看一下設定是不是對的,一般來說都是對的。

看看是不是lib。

接下來就是寫程式碼生成lib並測試一下:
1. 編寫程式碼:
比如說,我就想編寫一個輸出hello World的程式碼,那該如何編寫呢?
首先在標頭檔案中,建立一個hello.h的檔案

然後在標頭檔案中,定義一個sayHello的方法。

#include<stdio.h>
void sayHello();


然後Hellolib.cpp在重寫這個方法。

// Hellolib.cpp : 定義靜態庫的函數。
//
#include "pch.h"
#include "framework.h"
#include "hello.h"
// TODO: 這是一個庫函數範例
void sayHello()
{
	printf("Hello World");
}
  1. Visual Studio自動生成lib
    右鍵點選這個Hellolib

    點選生成,就行了。

    生成成功:

3.如何使用:
先說一下,生成的lib的位置,就是在上一級的x64的debug資料夾裡面。

在這裡面新建一個空專案,用於測試lib的,我這裡叫它testHello

在testHello裡面新建兩個資料夾,一個叫include,用來放.h的標頭檔案的,一個叫lib,用來放lib包的。
將我們生成的那個lib放進去,還有之前定義的.h檔案也放到include檔案裡面。
然後右擊testHello,開啟屬性。

然後開始調整:
設定lib


一般來說,不建立原始檔,它不會有c/c++編譯器,那個選項
然後建立一個test.cpp的原始檔。

建立原始檔後,在設定一下。
設定include檔案

我再說一遍,一定要先建立原始檔,不然是沒有c/c++的那個選項的。
然後編寫相應的程式碼。
看這個時候,就已經出來了:

編寫測試程式碼:

#include "hello.h"
int main() {
	sayHello();
	return 0;
}

然後點選執行,就會報錯。

這個錯誤是因為在啟動專案的時候,預設執行上一個專案了,我們將它改一下,就行了。
右擊解決方案,點選屬性。

把啟動專案改一下,改成你要執行的那個專案就行了。

執行結果:

動態庫的建立並使用

然後就是搞dll檔案,新建一個Hellodll專案。

初始化,頁面長這樣。

建立標頭檔案

#pragma once
#include"pch.h"
#ifdef MATHLIBRARY_EXPORTS
#define MATHLIBRARY_API __declspec(dllexport)
#else
#define MATHLIBRARY_API __declspec(dllimport)
#endif

extern "C" MATHLIBRARY_API void sayHello();

一樣的步驟建立cpp實現

點選HelloDll專案,右擊生成。

執行結果:

檢視生成dll的檔案

在這裡面新建一個專案 testDll
然後一樣的處理,在testDll裡面建立一個include資料夾和lib資料夾,include資料夾裡面放標頭檔案,lib資料夾裡面放dll和lib



然後設定一下include屬性

然後設定一下dll和lib



然後編寫程式碼:

#include "Hello.h"
int main()
{
	sayHello();
	return 0;
}


然後設定一下執行的專案。

點選執行,檢視結果,會報錯:

然後,把這行#include"pch.h"程式碼刪了

然後執行,執行成功。

由於本人不是主修c++的,有問題的,還請提出來,如確實如此,本人樂意接受。