创建项目
使用C++编译器(如Visual Studio)创建一个新的“DLL”项目。
编写头文件
定义DLL中将要导出的函数和类。
使用`extern "C"`来避免C++的名称修饰(name mangling)。
使用`ifdef MYDLL_EXPORTS`来区分导出和导入的函数。
编写源文件
实现头文件中声明的函数。
同样使用`extern "C"`。
编写模块定义文件(.DEF)
描述DLL的公共接口。
包含LIBRARY语句和EXPORT宏定义。
编译和链接
编译源代码文件生成目标文件。
链接目标文件生成DLL。
测试DLL
创建一个测试程序来调用DLL中的函数。
确保DLL被正确加载和使用。
下面是一个简单的示例,展示如何创建一个包含导出函数的DLL:
newDLL.h
ifdef _cplusplus
define EXPORT extern "C" _declspec(dllexport)
else
define EXPORT _declspec(dllexport)
endif
EXPORT BOOL CALLBACK EdrCenterTextA(HDC hdc, PRECT prc, PCSTR pString);
EXPORT BOOL CALLBACK EdrCenterTextW(HDC hdc, PRECT prc, PCWSTR pString);
ifdef UNICODE
define EdrCenterText EdrCenterTextW
else
define EdrCenterText EdrCenterTextA
endif
newDLL.cpp
include "newDLL.h"
BOOL CALLBACK EdrCenterTextA(HDC hdc, PRECT prc, PCSTR pString) {
// 实现文本居中功能
return TRUE;
}
BOOL CALLBACK EdrCenterTextW(HDC hdc, PRECT prc, PCWSTR pString) {
// 实现文本居中功能
return TRUE;
}
newDLL.def
LIBRARY Towngate
EXPORTS
EdrCenterTextA
EdrCenterTextW
编译和链接:
使用Visual Studio或其他C++编译器编译`newDLL.cpp`生成目标文件。
使用`lib`工具或编译器的链接选项将目标文件链接成DLL。
测试DLL:
创建一个测试程序,使用`LoadLibrary`和`GetProcAddress`加载DLL并调用其中的函数。
请根据具体情况调整上述代码示例。