1、新建-->win32項目,程序名字爲DLL,應用程序類型選擇DLL,附加選項選擇導出符號,添加公共頭用於,這個可以選擇ATL,也可以不選
2、生成主要文件有DLL.h,DLL.cpp,注意此處的DLL可以是任意的
DLL.cpp內容如下:
// Dll.cpp : 定義 DLL 應用程序的入口點。
//
#include "stdafx.h"
#include "Dll.h"
#ifdef _MANAGED
#pragma managed(push, off)
#endif
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
#ifdef _MANAGED
#pragma managed(pop)
#endif
// 這是導出變量的一個示例
DLL_API int nDll=0;
// 這是導出函數的一個示例。
DLL_API int fnDll(void)
{
return 42;
}
// 這是已導出類的構造函數。
// 有關類定義的信息,請參閱 Dll.h
CDll::CDll()
{
return;
}
Dll.h文件內容如下:
// 下列 ifdef 塊是創建使從 DLL 導出更簡單的
// 宏的標準方法。此 DLL 中的所有文件都是用命令行上定義的 DLL_EXPORTS
// 符號編譯的。在使用此 DLL 的
// 任何其他項目上不應定義此符號。這樣,源文件中包含此文件的任何其他項目都會將
// DLL_API 函數視爲是從 DLL 導入的,而此 DLL 則將用此宏定義的
// 符號視爲是被導出的。
#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif
// 此類是從 Dll.dll 導出的
//導出一個類
class DLL_API CDll {
public:
CDll(void);
// TODO: 在此添加您的方法。
};
//導出變量
extern DLL_API int nDll;
//導出單獨函數
DLL_API int fnDll(void);
3、使用上面編譯的DLL文件, 新建工程,將上面編譯後的DLL.dll,DLL.lib,Dll.h添加到新建的console工程目錄下里,main函數如下:
#include <stdio.h>
#include "Dll.h"
#pragma comment(lib,"Dll.lib")
int main()
{
CDll cdllClass;
printf("%d",nDll);
printf("%d",fnDll());
return 0;
}
4、這樣就大功告成了,如果想給類添加函數,只需在Dll.h中聲明,然後再Dll.cpp中實現就可以了
例如:
//導出一個類
class DLL_API CDll {
public:
CDll(void);
// TODO: 在此添加您的方法。
publi:
int Add(int a,int b);
};