本文主要是介绍使用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运行时库详细指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!