win32DLL導出函數、變量、類

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);
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章