安装Visual Studio 6.0,安装时勾选注册环境变量
编写测试代码
在控制台执行 cl myDll.c /LD
我的电脑上执行的命令:
E:\Windows编程\动态链接库dll>cl myDll.c /LD
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
myDll.c
Microsoft (R) Incremental Linker Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
/out:myDll.dll
/dll
/implib:myDll.lib
myDll.obj
Creating library myDll.lib and object myDll.exp
生成的新文件myDll.dll就是动态库,但是现在的动态库还不能使用,因为myDll.c中的函数还没有导出
我们可以使用dumpbin命令,查看myDll.dll,命令为 dumpbin myDll.dll /exports,确实可以看到myDll.c中的add函数还没有导出。
为了能够使用动态库,我们必须 能够把源代码里的函数导出,于是我们需要在源代码的函数前面加上__declspec(dllexport)
再编译一次
这一次多了两个文件,myDll.lib , myDll.exp
我们在用dumpbin myDll.dll /exports命令检查一下add函数是否导出,可以看到,add函数已经导出了,现在的动态库就可以真正使用了
编写测试文件test.c
使用命令 cl test.c会报错
重新编译,注意扩展名是 .lib ,这里的myDll.lib并不是静态库,它里面也不包含任何(add函数的)代码,它只是个给链接器提供信息的文件(也叫导入库)