Win32 dll 的简单创建与使用
使用工具:Microsoft visual c++ 6.0
一、创建dll工程以及生成dll
1、利用vc++创建一个win32 dynamic-link library类型的工程。
2、工程取名为:xxx
3、单击ok后,选择按empty dll project
4、为该工程添加一个c++源文件
5、在c++源文件中输入如下代码(当然也可以是其他你想共享的函数或类,我们先做简单的):
int add(int a,int b)
{
return a+b;
}
int subtract(int a,int b)
{
return a-b;
}
6、利用build命令生成这个动态链接库程序。
二、使用dumpbin命令
1、用Windows自带的dos运行C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT
2、在你生成dll文件的目录中运行,命令:dumpbin -exports dll01.dll
输的信息中没有与函数有关的信息,这说明dll01.dll没有导出函数。
三、从dll中导出函数
只需要在要被导出函数前添加表示符:_declspec(dllexport) 就行。如:
_declspec(dllexport) int add(int a,int b)
{
return a+b;
}
_declspec(dllexport) int subtract(int a,int b)
{
return a-b;
}
然后,从新执行build命令生成dll动态链接库。
再次在你生成dll文件的目录中运行,命令:dumpbin -exports dll01.dll
四、win32 控制台程序调用自己制作的dll
1、在vc++中创建win 32 控制台程序。
2、将自己制作的dll文件和lib文件都复制到该工程的目录下。
3、在工程中添加一个c++源文件
4、输入如下代码:
#include<iostream>
using namespace std;
extern int add(int a,int b);
extern int subtract(int a,int b);
int main()
{
int a = 5;
int b = 2;
cout<<"a+b="<<add(a,b)<<endl;
cout<<"a-b="<<subtract(a,b)<<endl;
return 0;
}
5、执行build命令,出现如下错误:
--------------------Configuration: dllTest01 - Win32 Debug--------------------
Linking...
main.obj : error LNK2001: unresolved external symbol "int __cdecl subtract(int,int)" (?subtract@@YAHHH@Z)
main.obj : error LNK2001: unresolved external symbol "int __cdecl add(int,int)" (?add@@YAHHH@Z)
Debug/dllTest01.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
dllTest01.exe - 3 error(s), 0 warning(s)
这是由于没有指明lib文件后果。单击菜单project-->settings...-->link。将自己制作的lib文件名粘贴到:
注意:空格隔开
6、再次执行build命令,执行程序。
至此,我们就完成的最简单的dll动态链接库的制作及调用。