windows命令行下通过cl命令编译动态链接库示例

一般在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++,如果安装了,进入他自带的命令行工具,就有这些命令了。