1.创建一个dll文件在vc6.0中
2.往工程中加入CPP文件,内容如下:
其中的_declspec(dllexport)表示将这个dll文件中的这个方法导出,只有dll文件中的方法或者类被导出了才能被外部调用
3.编译这个dll文件会在这个工程目录下的debug目录中出现三个文件,一个lib文件,一个dll文件和一个exp文件,exp文件可以不管他。lib文件存储的是dll文件中方法的入口地址索引等信息,真正的方法实现代码在dll文件中
4.如何使用dll文件。新建一个MFC基于对话框的工程test,在其上添加两个按钮add和subtract分别在这两个按钮上添加单击响应事件调用dll文件中的add和subtract方法
红框中表示声明dll文件中的方法
5.此时编译会出现错误,我们需要将上面的生成的dll文件和lib文件拷贝到test工程目录下(因为工程搜索dll文件路径是本工程中的debug目录中,当前工程目录中,然后是C盘中system32目录中)。然后选择 工程->设置->连接 在 对象/模板库 处添加 DLL.lib,注意如果有多个lib文件,在这里使用空格分隔而不是使用“/”,在编译就可以通过了。
6.有时不仅有dll文件和lib文件而且还有h文件,在h文件中其实起到的作用是声明哪些方法被导出可在dll文件外部可用。所以在使用的时候只需包含头文件,就起到了步骤4中图2红框中的作用,实际上在头文件中有这种语句
如果有若干个dll文件以及相对应的lib文件(也可能会有头文件),那么可以这样使用
1.将这些dll文件都拷贝到C盘中system32目录下(也可以拷贝到工程目录下,个人觉的还是拷贝到工程目录下,因为在发布软件的时候这些用到的dll文件需要一同发布)
2.将所有的h文件拷贝到VC98中的include目录下
3.将所有的lib文件拷贝到VC98中的lib目录下(在project->add to project->file中添加在VC98目录下的需要用到的lib文件)
4.写一个新的工程时,只需包含相应的头文件,就可以使用dll中的函数了
注意:个人强烈建议还是将dll文件和lib文件都放在自己创建的工程目下,在project->add to project->file中添加工程目录下的lib文件,否则不注意肯能会出现意想不到的问题,我就在这上面吃过大亏,出现0xc0000005的地址错误,却怎么都找不出是哪里的原因。
关于dll文件的头文件的写法
1.h文件
2.cpp文件
3.这样在客户端使用dll文件中的函数的时候只需包含头文件即可,不需要使用_declspec(dllimport).