一般在windows下写一个c/c++的动态链接库,我们都是在visual studio或着visual c++这些ide里面进行编译和生成的,今天介绍,如何通过命令行来实现手动编译和生成动态链接库。
首先,确保我们的系统中安装了visual studio 2019或着其他版本,这样,我们才可以使用命令行工具。
开始->程序里面找到visual studio 2019这个文件夹,里面有命令行工具。找到"x64 Native Tools Command Prompt for VS 2019",然后点击,打开一个cmd命令行。
我们准备我们的两个简单的程序,一个是动态库,一个是调用动态库的程序:
test.c
1 2 3 4 5 | #include <stdlib.h> __declspec(dllexport) int add(int a,int b) { return a + b; } |
main.c
1 2 3 4 5 6 7 8 | #include <stdio.h> extern int add(int a,int b); int main(){ int i = add(1,2); printf("add(1,2)=%d\n",i); return 0; } |
开始编译:
1 | cl -c test.c |
在打开的cmd命令行中,切换到我们的项目目录下,然后运行cl指令:
该命令执行之后,会生成一个test.obj文件,接着,我们运行链接命令:
1 | link -dll -out:test.dll test.obj |
从命令上,我们可以看出,会生成动态链接库test.dll,其实,同时还会生成test.lib,test.exp文件。
-----------------------------------------------------------
以上两步操作,其实可以通过一个命令来完成,就是:
1 | cl /LD test.c |
该命令可以直接生成动态链接库dll。
我们还可以通过dumpbin命令,查看生成的动态库的信息:
1 | dumpbin -exports test.dll |
有了动态链接库,我们接着利用这个动态链接库来生成main可执行程序。
1 | cl main.c test.lib |
运行该命令,会生成main.exe程序,在命令行下,可以直接运行:main,就可以看到打印结果:
以上就是在命令行下编译生成动态链接库的过程,如果你的系统里面没有cl指令,可能是没有安装visual studio或者visual c++,如果安装了,进入他自带的命令行工具,就有这些命令了。