VS2017建立動態庫DLL,並實現呼叫

2021-10-09 08:45:37 字數 1972 閱讀 4453

1、開啟vs2017,新建乙個"動態鏈結庫(dll)"專案,這裡命名為「myfirstdll」

2、建好後的專案中,在標頭檔案中會自動生成framework.h和pch.h兩個檔案,在原始檔中會自動生成dllmain.cpp和pch.cpp兩個檔案

3、在標頭檔案中新建乙個mathlibrary.**件,用於函式的宣告。

在原始檔中新建乙個mathlibrary.cpp檔案,用於函式的實現。

**用例是實現fibonacci生兔子的例子

// mathlibrary.h

#pragma once

// import 進口,輸入

// export 出口,輸出

#ifdef mathlibrary_exports

#define mathlibrary_api __declspec(dllexport)

#else

#define mathlibrary_api __declspec(dllimport)

#endif

// the finoacci recurrence relation describes a sequence f

// where f(n) is

// produce the next value in the sequence

// return true on success, false on overflow.

bool fibonacci_next()

if (index_ > 0)

std::swap(current_, previous_);

++index_;

return true;

}unsigned long long fibonacci_current()

unsigned fibonacci_index()

我這裡是在realease x64下執行,所以在與專案名同目錄下的x64中會生成乙個release資料夾

測試dll檔案

1、開啟vs2017新建乙個空專案,命名為testdll2

2、將之前生成的myfirstdll.dll、myfirstdll.lib和mathlibrary.**件複製到專案檔案中。

3、在testdll2中的頭資料夾中,將mathlibrary.h新增進來、在資源檔案中將myfirstdll.lib新增進來。

4、開始測試用例,在testdll2.cpp中新增如下**:

#include #include"mathlibrary.h"

int main()

while (fibonacci_next());

// report count of values written before overflow

std::cout << fibonacci_index() + 1 <<

"fibonacci sequence values fit in an " <<

"unsigned 64-bit interger. " << std::endl;

}

.dll和.lib檔案是在release x64下生成的,所以,運用時也需要在release x64下執行。執行結果:

VS2017動態鏈結庫( dll)的生成與呼叫

標頭檔案中為什麼要有下面的 呢?ifdef yakedll exports define yakedll api declspec dllexport else define yakedll api declspec dllimport endif declspec dllexport 意思是匯出符...

VS2017配置openssl靜態庫並使用

簡單記錄以下使用國密版openssl在vs2017中進行呼叫的配置過程。2 專案屬性,vc 目錄,包含目錄 新增include檔案目錄 3 專案屬性,vc 目錄,庫目錄 新增lib目錄,目錄中包含libcrypto.lib和libssl.lib這兩個靜態庫 5 由於編譯的是32位lib庫,因此工程選...

VS2017安裝並配置VTK

vtk的安裝 3.vtk解壓縮後得到乙個vtk 8.2.0的資料夾,我在這個資料夾裡面新建了兩個資料夾build和vtk prefix。4.用cmake編譯vtk 5.開啟我們之前建立的build資料夾,用vs2017開啟vtk.sln檔案。選中all build專案,右鍵選擇生成,靜靜等待一段時間...