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

    技术2022-05-20  23

    实验环境:Windows XP Microsoft Visual Studio 6.0 Enterprise Edition 参考网上文档《BUG:重新生成静态和动态 C 运行时库时出现问题》 假设VC是安装在E:/Program Files/Microsoft Visual Studio 1.   源代码的安装及配置文件的修改CRT 1.       安装VC6 CRT 源代码 l          在开始菜单上,单击控制面板,然后单击添加或删除程序。 l          当前安装的程序列表中,选中 Microsoft Visual C++ 6.0,单击更改/删除。 l          在出现的Visual C++ 6.0 Enterprise - Maintenance对话框中,选中左边的Microsoft Visual 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/Microsoft Visual 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 Visual Studio/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 Visual Studio/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 Visual Studio/VC98/Bin   E:/Program Files/Microsoft Visual Studio/VC98/Bin>vcvars32.bat Setting environment for using Microsoft Visual C++ tools.   6.       在命令提示符下,先转到Program Files/Microsoft Visual Studio/Vc98/Crt/Src 目录,然后运行nmake,如下: E:/Program Files/Microsoft Visual Studio/VC98/Bin>CD/Program Files/Microsoft Vis ual Studio/Vc98/Crt/Src   E:/Program Files/Microsoft Visual Studio/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 Visual Studio/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     Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1672012  


    最新回复(0)