使用VC++ 6.0生成C运行时库详细指南

2023-10-14 01:58

本文主要是介绍使用VC++ 6.0生成C运行时库详细指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用VC++ 6.0生成C运行时库详细指南

 

实验环境:Windows XP Microsoft Visual Studio 6.0 EnterpriseEdition

参考网上文档《BUG:重新生成静态和动态 C 运行时库时出现问题》

假设VC是安装在E:\ProgramFiles\Microsoft Visual Studio

1.  CRT 源代码的安装及配置文件的修改

1.  安装VC6 CRT 源代码

l  在开始菜单上,单击控制面板,然后单击添加或删除程序。

l  当前安装的程序列表中,选中 Microsoft Visual C++6.0,单击更改/删除。

l  在出现的Visual C++ 6.0 Enterprise -Maintenance对话框中,选中左边的MicrosoftVisual C++ 6.0,然后单击右边的Change Option 按钮。

l  接下来又出现一个 Visual C++ 6.0 Enterprise -Maintenance对话框,选中左边列表中第二项:VC++ Runtime Libraries,然后单击右边的 Change Option 按钮。

l  接下来再次出现一个 Visual C++ 6.0 Enterprise- Maintenance对话框,选中左边列表中第三项:CRT Source Code,然后单击确定。

注意:直接将VC安装光盘的CRT目录拷贝到目的地是不能编译成功的。


2.  将以下三个文件从 Visual C++ 安装 CD-ROM 手动复制到 E:\Program Files\MicrosoftVisual Studio\VC98\CRT\SRC:

• Makefile

• Makefile.inc

• Makefile.sub


3.  在文本编辑器(如UltraEdit)中,对Makefile 文件进行下列更改:

l  更改从第 38 行开始的三行代码

!if "$(V6TOOLS)"==""

V6TOOLS=\MSDEV

!endif

修改为:

!if "$(V6TOOLS)"==""

V6TOOLS=E:\Program Files\Microsoft VisualStudio\VC98

!endif

注意:不要用双引号将指定路径括起来。

 

l  默认情况下,第 331 行看上去是这样:RC_INCS=-I$(V6TOOLS)\include

如果 Visual C++ 6.0安装目录名含有空格,必须更改第 331 行,添加双引号,修改为:

RC_INCS=-I"$(V6TOOLS)\include"

 

l  在 Makefile 文件中搜索带 $(V6TOOLS)\include\winver.h \的行,然后删除这些行(共有6行)

2.  配置VC命令行编译环境

4.  编辑E:\Program Files\Microsoft VisualStudio\VC98\Bin\Vcvars32.bat

为什么要修改Vcvars32.bat,因为现存的内容可能是这样:

set VSCommonDir=E:\PROGRA~1\MICROS~1\Common

而实际上在PROGRA~1里面,可能装了Microsoft Office、Microsoft Visual Studio……

按照MICROS~1来找VC路径可能找不到。

修改后的样子类似:

@echo off

rem

rem Root of Visual Developer Studio Common files.

set VSCommonDir=E:\Program Files\Microsoft Visual Studio\Common

 

rem

rem Root of Visual Developer Studio installed files.

rem

set MSDevDir=E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\Common\msdev98

 

rem

rem Root of Visual C++ installed files.

rem

set MSVCDir=E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98

 

rem

rem VcOsDir is used to help create either a Windows 95 or Windows NT specific path.

rem

set VcOsDir=WIN95

if "%OS%" == "Windows_NT" set VcOsDir=WINNT

 

rem

echo Setting environment for using Microsoft Visual C++ tools.

rem

 

if "%OS%" == "Windows_NT" set PATH=%MSDevDir%\BIN;%MSVCDir%\BIN;%VSCommonDir%\TOOLS\%VcOsDir%;%VSCommonDir%\TOOLS;%PATH%

if "%OS%" == "" set PATH="%MSDevDir%\BIN";"%MSVCDir%\BIN";"%VSCommonDir%\TOOLS\%VcOsDir%";"%VSCommonDir%\TOOLS";"%windir%\SYSTEM";"%PATH%"

set INCLUDE=%MSVCDir%\ATL\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\MFC\INCLUDE;%INCLUDE%

set LIB=%MSVCDir%\LIB;%MSVCDir%\MFC\LIB;%LIB%

 

set VcOsDir=

set VSCommonDir=

 


5.在命令提示符下,运行批处理文件vcvars32,如下:

D:\Documents and Settings\zq>e:

 

E:\>cd\Program Files\Microsoft VisualStudio\VC98\Bin

 

E:\Program Files\Microsoft Visual Studio\VC98\Bin>vcvars32.bat

Setting environment for using Microsoft Visual C++tools.

 

6.在命令提示符下,先转到Program Files\Microsoft VisualStudio\Vc98\Crt\Src 目录,然后运行nmake,如下:

E:\Program Files\Microsoft Visual Studio\VC98\Bin>CD\ProgramFiles\Microsoft Visual Studio\Vc98\Crt\Src

 

E:\Program Files\Microsoft VisualStudio\VC98\CRT\SRC>nmake

 

NMAKE 生成所有的静态和动态库。这些库位于E:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\Build\Intel目录中。

 

3.   总结:

7.操作步骤总结

序号

步骤

说明

1

安装VC6 CRT 源代码

不要简单拷贝

2

复制Makefile/Makefile.inc/Makefile.sub等文件

 

3

修改Makefile文件

注意不要注释$(V6TOOLS)\include\winver.h \

4

修改Vcvars32.bat

 


8.MSDN上关于C run-time library的说明:

C run-time library (without iostream or standard C++ library)

Characteristics

Option

Preprocessor directives

LIBC.LIB

Single-threaded, static link

/ML

 

LIBCMT.LIB

Multithreaded, static link

/MT

_MT

MSVCRT.LIB

Multithreaded, dynamic link (import library for MSVCR71.DLL). Be aware that if you use the Standard C++ Library, your program will need MSVCP71.DLL to run.

/MD

_MT, _DLL

LIBCD.LIB

Single-threaded, static link (debug)

/MLd

_DEBUG

LIBCMTD.LIB

Multithreaded, static link (debug)

/MTd

_DEBUG, _MT

MSVCRTD.LIB

Multithreaded, dynamic link (import library for MSVCR71D.DLL) (debug)

/MDd

_DEBUG, _MT, _DLL

 

9.最后得到的主要文件(E:\Program Files\Microsoft VisualStudio\VC98\CRT\SRC\build\intel)

序号

生成的文件

等价于原有的文件

1

libc.lib

LIBC.LIB  

2

libcmt.lib

LIBCMT.LIB

3

libcd.lib

LIBCD.LIB 

4

libcmtd.lib

LIBCMTD.LIB

5

_sample_.lib

MSVCRT.LIB

6

_sampld_.lib

MSVCRTD.LIB

7

_sample_.dll

MSVCRT.DLL

8

_sampld_.dll

MSVCRTD.DLL

 


这篇关于使用VC++ 6.0生成C运行时库详细指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/207336

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�