Welcome

首页 / 软件开发 / C语言 / 抽取VS文件组成类GCC的编译器并编译C程序为dll动态链接库

抽取VS文件组成类GCC的编译器并编译C程序为dll动态链接库2013-11-16用惯了linux下的GCC编译工具,倒喜欢起命令行的方式编译链接C程序,居然还发现我装的VS工具没看到直接编译C程序的工具(我不太熟悉这个)。VS的编译文件命令是cl,链接命令是link。参考了网上资料,采用提取VS的编译器文件组成一个可以命令行方式编译程序的工具。以下为步骤:

1,在自己目录创建文件夹,如:D:/vctool;

2,将VS安装目录下的VC目录下的bin、lib、include目录考到vctool目录下;

3,将c:/Program Files/Microsoft SDKs/Windows/V6.0A(或类似目录,亦是VS的安装文件)下的Lib目录拷到vctool目录下,并记得不要覆盖而是重命名为sdklib;

4,现在所需的命令文件和类库、include文件都拷过来了,将bin目录加到环境变量path中;

5,接下来可以编写c语言文件 Test.c:

#include "stdio.h"__declspec(dllexport) int sum(int a, int b){return a + b;}
5,编写编译文件:build.bat:

set PATH=./;D:/vctool/bin;%path%set INCLUDE=D:/vctool/includeset LIB=D:/vctool/lib;D:/vctool/sdklibcl /c Test.clink /dll Test.objpause
6,双击运行build.bat,发现编译错误,找不到mspdb80.dll文件:

于是在VS安装目录下搜索,将该文件拷贝到vstool/bin目录下;再双击build.bat编译,编译成功,目录下已生成:

Test.dll Test.lib Test.obj

若链接的时候出现 LINK: fatal error LNK1104:无法打开文件“kernel32.lib” 错误,则是因为sdklib没拷对或者没设到环境变量LIB(build.bat)

以下为网上找到的相关资料:

2.下面详细介绍下cl命令:

cl.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具。编译器产生通用对象文件格式 (COFF)

对象 (.obj) 文件。链接器产生可执行文件 (.exe) 或动态链接库文件 (DLL)。

注意,所有编译器选项都区分大小写。