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

 

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