1. 程式人生 > >VS2013編寫一個DLL,並建立EXE對DLL進行呼叫

VS2013編寫一個DLL,並建立EXE對DLL進行呼叫

一、建立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、執行結果顯示