抽取VS文件组成类GCC的编译器并编译C程序为dll动态链接库

用惯了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/include
set LIB=D:/vctool/lib;D:/vctool/sdklib

cl /c Test.c
link /dll Test.obj
pause

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)。

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索目录
, 编译
, 文件
, 编译器
, 命令
, 链接
, gcc vc++6.0
, 编译链接
, c编译
, c++vs
, c 编译
, 链接编译
, 编译C
编译c程序
c程序编译器、c程序编译器下载、怎么用gcc编译c程序、linux下gcc编译c程序、windows gcc运行c程序,以便于您获取更多的相关知识。

时间: 2024-09-09 04:21:23

抽取VS文件组成类GCC的编译器并编译C程序为dll动态链接库的相关文章

gcc/g++编译器和gdb调试器

gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp]2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]4.连接目标代码,生成可执行程序[链接器ld] [参数详解]-x language filename 设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后缀名称是.c的,而C++的后缀名是.C

C/C++编译器GCC下的常用编译命令总结_C 语言

简介GCC的意思是GUN C Compiler.经过了多年的发展,GCC已经不仅仅能支持C语言了,它现在还支持Ada语言.C++语言.Java语言.Objective C语言.Pascal语言.COBOL语言,以及支持函数式编程和逻辑编程的Mercury语言等等.而GCC也不再单只是GUN C语言编译器的意思了,而是变成了GUN Complier Collection也即是GUN编译器家族的意思了.另一方面,说到GCC对于操作系统平台以及硬件平台支持,概括起来就一句话:无所不在. 编译示例程序如

用java写的一个文件操作类包

前几天仔细看了看java的I/O操作,呵呵.就写了一个操作文件的类包,功能有创建文件或目录,删除文件或目录,复制文件或目录,移动文件或目录,设置文件或目录属性,查看文件或目录大小.呵呵,功能比较简单,源代码为: 创建: Java代码 package fileOperation; import java.io.File; import java.io.FileOutputStream; /** * @author wakin * */ public class Create { /**根据字符串生

PhalApi-Zip--压缩文件处理类

PhalApi-Zip -- 压缩文件处理类 前言 这是笔者在工作中,同事找到的一个比较不错的文件压缩类,也经过了实际的使用很不错所以分享处理,特此鸣谢:@牧鱼人 附上: 官网地址:http://www.phalapi.net/ 开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release 开源中国拓展Git地址:http://git.oschina.net/dogstar/PhalApi-Library 1. 安装使用 此扩展只需要

C#读取XML文件——自定义类

C#本身也带有读取XML文件的类,但是许久未曾接触C#了,为了练练手,自己写了一个具有简单功能的类,实现了读取xml文件,查找元素,插入结点等功能.实现如下: XmlDoc类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleCSharp { class XmlDoc { internal static st

PHP面向对象文件操作类

对象 <?php  /*  文件名:ClassFile.php  功能:面向对象,文件操作类(查看文件,删除文件,上传文件)  作者:感染源  时间:2007-1-11 */  class ClassFile {  private $dir_name;  private $file_name;  private $dh;  //private $file_path;      //构造函数,打开工作文件目录  function __construct($PDirName)  {   $this-

使用API函数播放MP3等音频文件的类设计(C#)

函数|设计 C#没有提供播放MP3等音频文件的类,要编写播放MP3等音频文件程序,必须使用第三方控件或类.本文使用API函数mciSendString,编写一个播放MP3等音频文件的类. 具体源码如下: 一.使用API函数mciSendString构成的媒体播放类.using System;using System.Runtime.InteropServices; using System.Text; using System.IO ; namespace clsMCIPlay{ /// <su

常用的读写ini文件的类

using System;using System.IO;using System.Runtime.InteropServices;using System.Text;using Microsoft.Win32; namespace Wjb.ReadOrWriteIniAndReg{ /// <summary> /// RWIni 的摘要说明. /// 读写ini文件类 /// 类库开发:吴剑冰 /// 时间:2003年10月20日 /// 功能:读写INI文件 /// </summar

php类:XML文件分析类

XMLParser.class.php <?php /** XML 文件分析类 * Date: 2013-02-01 * Author: fdipzone * Ver: 1.0 * * func: * loadXmlFile($xmlfile) 读入xml文件输出Array * loadXmlString($xmlstring) 读入xmlstring 输出Array */ class XMLParser{ /** 读取xml文件 * @param String $xmlfile * @retu