1. 新建项目
VS2010 - 新建Win32项目 - DLL + 导出符号,这里的项目名为Test
2. 编辑文件
目前我还没有完全搞懂,先记录下
这里主要处理两个文件,其他不用管,Test.h 和 Test.cpp。
Test.h
_________________________________________________
// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 TEST_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// TEST_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
// 这是用宏重新写了下每次导出都要用到的 __declspec(dllexport)
#ifdef TEST_EXPORTS
#define TEST_API __declspec(dllexport)
#else
#define TEST_API __declspec(dllimport)
#endif
// 此类是从 Test.dll 导出的
// 直接把写成的类移植进去就行
class TEST_API CTest {
public:
CTest(void);
// TODO: 在此添加您的方法。
};
// 这里是定义变量的一个示例写法,注意 extern 关键字
extern TEST_API int nTest;
// 这里是定义方法的一个示例写法,和类一样,直接添加导出的关键字就行
TEST_API int fnTest(void);
Test.cpp
___________________________________________________________________
// Test.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
#include "Test.h"
// 这里按照他的示例写法完成就行
// 这是导出变量的一个示例
TEST_API int nTest=0;
// 这是导出函数的一个示例。
TEST_API int fnTest(void)
{
return 42;
}
// 这是已导出类的构造函数。
// 有关类定义的信息,请参阅 Test.h
CTest::CTest()
{
return;
}
3. 运行封装
在 Release 下生成解决方案就行
调用时需要用到 Test.dll Test.lib Test.h 三个文件
Test.dll Test.lib 位置:
1. X86 :Test \ Release \
2. X64:Test \ x64 \ Release \
Test.h 位置:
Test \ Test \
4. 调用
新建Win32 控制台应用程序 项目“TestDll”,其他默认,其实空项目也行。
然后将上面的三个文件放在项目根目录中
在TestDll.cpp中添加导入句柄就可以了
// Test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
// 就是添加这两句话
#include "Test.h"
#pragma comment(lib, "Test.lib")
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}