第一步: 使用VC6.0工程向导 Win32 Dynamic-Link Library
创建Win32s1工程,并在向导第一步选择 An empty DLL project
第二步: 在FileView中分别创建 dll1.h和dll1.cpp
①、在dll1.h中定义
#ifndef _DLL_BASICUI_H_
#define _DLL_BASICUI_H_ //告诉编译器只编译该文件一次
#if defined DLL_EXPORT
#define SBUI_API __declspec(dllexport)
#else
#define SBUI_API __declspec(dllimport)
#endif
/*
C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为: void foo(int x, int y);
该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。
C++提供了C连接交换指定符号extern“C”来解决名字匹配问题。
*/
/*
如果编译器看到 __cplusplus 标识,则 extern "C" 参与编译, 反之不编译
这样的预处理命令对调试程序、平台移植非常有用
如果 extern "C" 被编译{...}中间的语句执行C语法规则
另外, __cplusplus 是C++编译器的保留宏定义,也就是说C++编译器认为这个
宏已经定义了
*/
#ifdef __cplusplus
// only need to export C interface if used by C++ source code
extern "C" {
#endif
//……
//这里是导出函数的声明部分
#undef SBUI_API
#ifdef __cplusplus
}
#endif
#endif
②、在dll1.cpp文件中
#define DLL_EXPORT
#include <windows.h>
#include "dll1.h"
第三步: 添加功能函数
首先,在头文件中声明导出函数
SBUI_API BOOL SBUI_DoGetPathName(HWND hwndParent, //主窗口句柄
LPTSTR pPathName, //全路径名
short nFLAG, //路径标志 1打开;,2保存
short nFileType); //文件类型 1配置文件,2位图文件
其次,在.cpp文件中实现函数
BOOL SBUI_DoGetPathName(HWND hwndParent,
LPTSTR pPathName,
short nFLAG,
short nFileType)
{
//……
}
备注: 长此以来我就是按照这个格式,创建自己的Win32 DLL工程,不知道正确不正确,我已经用了一段时间了,呵呵!~