假设:
1. 编译器为VS2010
2. 工程根目录为C:\VSProjects\
3. DLL是基于MFC的 (如果不是基于MFC的,也是类似的)
DLL 的创建:
1. 创建一个DLL工程
File->New->Project...->在左侧Visual C++下选择MFC->在右侧选择MFC DLL->在下面的输入框输入工程的名字DLLTest->点击OK按钮->Next->DLL type默认选择第一项RegularDLL using shared MFC DLL->点击Finish按钮
2. 在DLLTest.h头文件中加入:
#ifdef DLLTest_API
#define DLLTest_API extern "C" _declspec(dllexport)
#else
#define DLLTest_API extern "C" _declspec(dllimport)
#endif
*注:extern "C" 是可选的,extern "C" 是为了保证导出的DLL函数名不发生变化。如果写了extern "C",那么导出和导入都要写,要保证一致。
如果要导出的是类,不能在类名前加extern "C",切记切记!!编译不会通过的。
2.1导出method:
DLLTest_API int add(int x, int y)
{
return x + y;
}
2.2导出class
class _declspec(dllimport) ClassA
{
};
3. 在DLL工程中配置宏名DLLTest_API
右键工程名DLLTest->选择Properties->选择Configuration Properties->选择C/C++->选择Preprocessor->在右侧Preprocessor Definitions的右侧的下拉箭头点击<Edit...>->在弹出的框中添加DLLTest_API->点击OK
4. 编译DLLTest
创建调用DLL的工程:
1. 创建一个Win32 Console Application工程
File->new->Project...->在左侧Visual C++下选择Win32->在右侧选择Win32 Console Application->在下面的输入框输入工程的名字CallDLLTest->点击OK按钮->Next->勾选MFC选项->点击Finish按钮
注:路径信息
DLLTest 工程路径:
C:\VSProjects\DLLTest
DLLTest.h头文件路径:
C:\VSProjects\DLLTest\DLLTest\DLLTest.h
DLLTest.lib文件路径:
C:\VSProjects\DLLTest\Debug\DLLTest.lib
DLLTest.dll文件路径:
C:\VSProjects\DLLTest\Debug\DLLTest.dll
2. 在CallDLLTest工程的CallDLLTest.h头文件中引DLL的头文件
#include "../../DLLTest/DLLTest/DLLTest.h"
3.在CallDLLTest工程中添加include路径
右键工程名DLLTest->选择Properties->选择Configuration Properties->选择C/C++->选择General->在右侧Additional Include Directories中添加DLLTest的工程路径
4.拷贝lib和dll文件
将DLLTest.lib和DLLTest.dll文件拷贝到C:\VSProjests\CallDLLTest\Debug\路径下
5.在CallDLLTest中添加Linker
右键工程名DLLTest->选择Properties->选择Configuration Properties->选择Linker->在右侧Additional Dependencies中添加lib的路径../Debug/CallDLLTest.lib
大功告成~!在CallDLLTest工程中可以调用DLL导出的函数、类。