1.加载动态链接库文件的方式有两种: 显式加载, 隐式加载
2.vc6自带的工具可以查看动态链接库文件的信息
命令行工具dumpbin
dumpbin -exports xxx.dll //查看导出函数
dumpbin -imports xxx.exe //查看exe文件的导入表信息
3.导出函数的格式
_declspec(dllexport) int add(...);
4.导出函数的时候, 名字会被改编, 有几种方式可以使函数名字不发生改编
最好的方法是定义一模块文件 *.def
新建def文件, 添加到工程, 格式如下:
LIBRARY xxx (xxx为dll内部名称)
EXPORTS
要导出的函数名, 如add
5.导入函数的格式
_declspec(dllimport) int add(...);
6.动态加载链接库文件的方法
用LoadLibrary, GetProcAddress
LoadLibrary()
GetProAddress(..., "add")
typedef int (*Fun)(int a, int b);
Fun fun = (Fun)GetProAddress(..., "add")
注:如果有显示说明调用约定的话:
typedef int (_stdcall *Fun)(int a, int b) //(_stdcall这个约定也可能是其它)
7.DllMain这个是动态链接库的入口函数, 相当于CUI程序中的main, GUI程序中的WinMain