VS2013編寫一個DLL,並建立EXE對DLL進行呼叫
阿新 • • 發佈:2019-01-01
一、建立DLL專案
檔案->新建->專案->Visual C++ win32控制檯程式(填寫專案名makeDLL)->下一步->(應用程式設計)勾選:DLL、匯出符號->完成
二、專案自動生成DLL模板
makeDLL.h // 下列 ifdef 塊是建立使從 DLL 匯出更簡單的 // 巨集的標準方法。此 DLL 中的所有檔案都是用命令列上定義的 MAKEDLL_EXPORTS // 符號編譯的。在使用此 DLL 的 // 任何其他專案上不應定義此符號。這樣,原始檔中包含此檔案的任何其他專案都會將 // MAKEDLL_API 函式視為是從 DLL 匯入的,而此 DLL 則將用此巨集定義的 // 符號視為是被匯出的。 #ifdef MAKEDLL_EXPORTS #define MAKEDLL_API __declspec(dllexport) #else #define MAKEDLL_API __declspec(dllimport) #endif // 此類是從 makeDLL.dll 匯出的 class MAKEDLL_API CmakeDLL { public: CmakeDLL(void); // TODO: 在此新增您的方法。 }; extern MAKEDLL_API int nmakeDLL; MAKEDLL_API int fnmakeDLL(void);
// makeDLL.cpp : 定義 DLL 應用程式的匯出函式。
//
#include "stdafx.h"
#include "makeDLL.h"
// 這是匯出變數的一個示例
MAKEDLL_API int nmakeDLL=0;
// 這是匯出函式的一個示例。
MAKEDLL_API int fnmakeDLL(void)
{
return 42;
}
// 這是已匯出類的建構函式。
// 有關類定義的資訊,請參閱 makeDLL.h
CmakeDLL::CmakeDLL()
{
return;
}
在makeDLL.h中宣告要被呼叫的函式
MAKEDLL_API int Add(int a, int b);
在makeDLL.cpp中實現要被呼叫的函式
MAKEDLL_API int Add(int a, int b)
{
return a + b;
}
三、生成專案,在Debug中生成的檔案如下
四、建立要使用DLL的EXE專案
檔案->新建-> 專案->Visual C++ win32控制檯應用程式(填寫專案名testDLL)->一路下一步.....
五、引入DLL
1、將makeDLL.h、makeDLL.lib放入testDLL資料夾
2、在資源管理器處,專案名稱上右鍵,點開最下面屬性頁,選擇C/C++->常規->附加包含目錄,寫入makeDLL.h檔案的路徑
3、同樣方法,進入屬性頁,選擇 連結器->常規->附加庫目錄,寫入makeDLL.lib 檔案路徑
4、專案testDLL生成,出現Debug資料夾,將makeDLL.dll檔案拷貝進Debug資料夾
5、在testDLL.cpp檔案中,對DLL中函式進行呼叫
#pragma是一條編譯器指令,告訴編譯器要連結一些東西,在comment裡指明是什麼
#include "stdafx.h"
#include<iostream>
#include "makeDLL.h"
#pragma comment(lib,"makeDLL.lib") //指定與靜態庫一起連結,手動包含(標題3所示)之後可以省略
int _tmain(int argc, _TCHAR* argv[])
{
int a, b, c;
std::cin >> a >> b;
c = fnmakeDLL(a, b);
std::cout << c << std::endl;
system("pause");
return 0;
}
6、執行結果顯示