sgnaw (李逍遥) 2006-12-07
* VC++6 做 DLL 步骤
1.File->New ... 新建一个 Win32 Dynamic-Link Library 的工程
比如名称为 MyDLL , 在向导中选择空的工程。
2. 在 FileView 中对工程点右键,选 Add Files to Project ...
添加 MyDLL.cpp, MyDLL.h, MyDLL.def 三个文件.
3. 源程序内容(MyDLL.cpp, MyDLL.h, MyDLL.def)
/**/
/* --------------------------
MyDLL.cpp 文件
-------------------------- */
#include
<
windows.h
>
#include
"
MyDLL.h
"
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
return TRUE ;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
__stdcall
int
CALLBACK MySum(
int
a,
int
b)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
return a+b;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
/*----------------------
MyDLL.h 文件
----------------------*/
#ifdef __cplusplus
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
extern
"
C
"
...
{
#endif
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
__stdcall int CALLBACK MySum (int, int) ;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
#ifdef __cplusplus
}
#endif
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
;
; MyDLL.def 文件
;
LIBRARY
"
MyDLL
"
EXPORTS
MySum @
1
4.按 F7 编译, 默认会在工程所在目录的 Debug 目录下生成一个 MyDLL.dll 文件
//-------------------------------------------------
在 Visual Basic 6 中调用 MyDLL.dll 的步骤
1.进入 VB6 , 新建一个 Standard EXE
( 可以把此 DLL 文件 copy 到你的 VB 工程目录中 )
2.添加一个按钮, 关双击,在代码窗口添加如下代码:
'
注意,下面的 MyDLL.dll 的位置要修改成你的位置
'
或者把 MyDLL.dll 放在你的 path 环境变量所在的目录
'
比如放在 c:windowssystem32 目录中
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
Private
Declare
Function MySum()
Function MySum Lib "E:/src/vc6/learn/MyDLL/vb/MyDLL.dll" _
(ByVal S As Integer, ByVal D As Integer) As Integer
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
Private Sub Command1_Click()Sub Command1_Click()
Dim a As Integer
a = MySum(2, 3) ' 在这里设置一个断点
End Sub
3.运行, 点击按钮, 观察断点运行情况.