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專案,右鍵選擇生成,靜靜等待一段時間...