剑侠录java_C++库讨论

开始之前,确认:

1.安装完成Visual Studio 2005,确认安装的时候选中了Unicode MFC version以及CRT source code(默认是选中的,如果你没有改动的话那么应该是装上了的);

2.找到我们要动手术的目录,在$(Program Files)\Microsoft Visual Studio 8\VC 下,找出ATLMFC\SRC和CRT\SRC两个文件夹;

3.(可选)安装Platform SDK,复制最新版本的unicows.lib放到VC\PlatformSDK\LIB中。VC8自带有unicows.lib,所以这一步可以不做。

一:编译MSLU的CRT库8.0

首先请备份一下VC\Lib、VC\CRT\SRC、VC\ATLMFC\SRC、VC\ATLMFC\lib这四个文件夹(包括子文件夹),假如不小心改错的话可以直接从备份的文件夹里复制文件出来。

CRT库需要编译的是这6个DLL:MSVCR80.DLL、MSVCP80.DLL、MSVCM80.DLL、MSVCR80D.DLL、MSVCP80D.DLL、MSVCM80D.DLL。为方便操作,我们把将要输出的MSLU的CRT库文件改为别的名字以免和原来的混淆,分别改成:MSLUR80.DLL、MSLUR80D.DLL、MSLUP80.DLL、MSLUP80D.DLL、MSLUM80.DLL、MSLUM80D.DLL(如果你改成别的名字的话,后面的操作请做相应的改正)。

(1)先把SRC目录下的相应文件改名:

copy _SAMPLE_.RC MSLUR80.RC

copy SAMPLE_P.RC MSLUP80.RC

copy SAMPLE_M.RC MSLUM80.RC

copy SAMPLE_P.DEF MSLUP80.DEF

copy SAMPLD_P.DEF MSLUP80D.DEF

copy SAMPLE_M.DEF MSLUM80.DEF

copy SAMPLD_M.DEF MSLUM80D.DEF

copy SAMPLE_U.DEF MSLUU80.DEF

copy SAMPLD_U.DEF MSLUU80D.DEF

copy Intel\_SAMPLE_.DEF Intel\MSLUR80.DEF

copy Intel\_SAMPLD_.DEF Intel\MSLUR80D.DEF

(2)打开MSLUP80.DEF,修改LIBRARY SAMPLE_P为LIBRARY MSLUP80;

打开MSLUP80D.DEF,修改LIBRARY SAMPLD_P为LIBRARY MSLUP80D;

打开MSLUM80.DEF,修改LIBRARY SAMPLE_M为LIBRARY MSLUM80;

打开MSLUM80D.DEF,修改LIBRARY SAMPLD_M为LIBRARY MSLUM80D;

打开MSLUU80.DEF,修改LIBRARY SAMPLE_M为LIBRARY MSLUM80;(注意此处不是MSLUU80而是MSLUM80)

打开MSLUU80D.DEF,修改LIBRARY SAMPLD_M为LIBRARY MSLUM80D;(注意此处不是MSLUU80D而是MSLUM80D)

打开\Intel\MSLUR80.DEF,修改LIBRARY _SAMPLE_为LIBRARY MSLUR80;

打开\Intel\MSLUR80D.DEF,修改LIBRARY _SAMPLD_为LIBRARY MSLUR80D;

(3)打开SRC\makefile文件,修改开头部分为:

RETAIL_DLL_NAME=MSLUR80

RETAIL_DLL_NAME=MSLUR80

RETAIL_LIB_NAME=MSLUR80

RETAIL_DLLCPP_NAME=MSLUP80

RETAIL_LIBCPP_NAME=MSLUP80

RETAIL_DLLMIXED_NAME=MSLUM80

RETAIL_LIBMIXED_NAME=MSLUM80

RETAIL_LIBPURE_NAME=MSLUU80

RETAIL_PT_LIBMIXED_NAME=MLSUPTM

RETAIL_PT_LIBPURE_NAME=MLSUPTU

DEBUG_DLL_NAME=MSLUR80D

DEBUG_LIB_NAME=MSLUR80D

DEBUG_DLLCPP_NAME=MSLUP80D

DEBUG_LIBCPP_NAME=MSLUP80D

DEBUG_DLLMIXED_NAME=MSLUM80D

DEBUG_LIBMIXED_NAME=MSLUM80D

DEBUG_LIBPURE_NAME=MSLUU80D

DEBUG_PT_LIBMIXED_NAME=MLSUPTMD

DEBUG_PT_LIBPURE_NAME=MLSUPTUD

RC_NAME=MSLUR80

RCCPP_NAME=MSLUP80

RCMIXED_NAME=MSLUM80

54行处修改VCTOOLS,注意自己的VS2005安装目录,假如安装到E:\SoftWare\Microsoft Visual Studio 8\下,则此处改为:

VCTOOLS=E:\SoftWare\Microsoft Visual Studio 8\VC

1779, 1841, 1905, 1940, 2037, 2105, 2139, 2230行的kernel32.lib,改为:unicows.lib kernel32.lib(一共8个不要改多了);

(4)打开Visual Studio 2005 command prompt(从开始菜单或者是vc8的开发环境的菜单都可以启动),进入到SRC目录,输入命令设置vctools,假如VS2005安装在E:\SoftWare\Microsoft Visual Studio 8\下,则输入:

Set vctools=E:\SoftWare\Microsoft Visual Studio 8\VC

完成后输入bldnt启动SRC目录下的bldnt.bat批处理文件编译CRT库。

译者:我编译的时候出来好多warning,不管他最后还是编译完成了。

(5)编译完成之后lib文件都放在SRC\BUILD\INTEL\目录下,把文件名字改回来以便以前的程序可以链接,而且下面编译MFC库也需要。DLL文件不用改,新的lib文件知道该链接到谁那里。改名:

copy MLSUPTM.LIB PTRUSTM.LIB

copy MLSUPTMD.LIB PTRUSTMD.LIB

copy MLSUPTU.LIB PTRUSTU.LIB

copy MLSUPTUD.LIB PTRUSTUD.LIB

copy MSLUR80.LIB MSVCRT.LIB

copy MSLUR80D.LIB MSVCRTD.LIB

copy MSLUP80.LIB MSVCPRT.LIB

copy MSLUP80D.LIB MSVCPRTD.LIB

copy MSLUM80.LIB MSVCMRT.LIB

copy MSLUM80D.LIB MSVCMRTD.LIB

copy MSLUU80.LIB MSVCURT.LIB

copy MSLUU80D.LIB MSVCURTD.LIB

(6)把改名后的lib文件复制到VC\LIB目录下覆盖原来的文件。

(7)把步骤(4)、(5)、(6)再执行一次来重建MSLUP80(D).DLL和静态库,以便他们能链接到我们自己的MSVCRT(D).LIB(指向我们的MSLUR80(D).DLL)。

关掉VS2005 command prompt,因为编译CRT库的时候定义了许多环境变量,这些会使后面MFC库的编译出现错误。

6个新的DLL文件都在\VC\crt\src\build\intel下,把这6个文件复制到系统目录下。

二:编译MSLU的MFC库8.0 Unicode版本

MFC库需要编译的是这4个DLL:

MFC80U.DLL (Unicode Release)

MFC80UD.DLL (Unicode Debug)

MFCM80U.DLL (Mixed mode/Managed Unicode Release)

MFCM80UD.DLL (Mixed mode/Managed Unicode Debug)。

为方便操作,我们把将要输出的MSLU的CRT库文件改为别的名字以免和原来的混淆,分别改成:

MFC80LU.DLL

MFC80LUD.DLL

MFCM80LU.DLL

MFCM80LUD.DLL

(如果你改成别的名字的话,后面的操作请做相应的改正)。

(1)打开VC\ATLMFC\SRC\MFC\MFCDLL.MAK,在274、307行的link @<

link @<<

/nod:kernel32.lib /nod:advapi32.lib /nod:user32.lib /nod:gdi32.lib /nod:shell32.lib /nod:comdlg32.lib /nod:version.lib /nod:mpr.lib /nod:rasapi32.lib /nod:winmm.lib /nod:winspool.lib /nod:vfw32.lib /nod:secur32.lib /nod:oleacc.lib /nod:oledlg.lib /nod:sensapi.lib

180行的

LIBS=$(CRTDLL) kernel32.lib gdi32.lib msimg32.lib user32.lib uuid.lib daouuid.lib htmlhelp.lib shlwapi.lib $(PROFLIB)

改为:

LIBS=$(CRTDLL) unicows.lib kernel32.lib advapi32.lib comdlg32.lib shell32.lib oledlg.lib winspool.lib oleacc.lib gdi32.lib msimg32.lib user32.lib uuid.lib daouuid.lib htmlhelp.lib shlwapi.lib $(PROFLIB)

(此处不同于原文。原文为:

LIBS=$(CRTDLL) unicows.lib kernel32.lib gdi32.lib msimg32.lib user32.lib uuid.lib daouuid.lib htmlhelp.lib shlwapi.lib $(PROFLIB)

译者依照原文修改,编译的时候出现了错误,增加数个lib文件后编译通过)

(2)打开VC\ATLMFC\SRC\MFCM\MFCMDLL.MAK,在253、272行的link @<

link @<<

/nod:kernel32.lib /nod:advapi32.lib /nod:user32.lib /nod:gdi32.lib /nod:shell32.lib /nod:comdlg32.lib /nod:version.lib /nod:mpr.lib /nod:rasapi32.lib /nod:winmm.lib /nod:winspool.lib /nod:vfw32.lib /nod:secur32.lib /nod:oleacc.lib /nod:oledlg.lib /nod:sensapi.lib

215行的

LIBS=$(CRTDLL) $(CRTMDLL) mscoree.lib kernel32.lib gdi32.lib msimg32.lib user32.lib \

改为:

LIBS=$(CRTDLL) $(CRTMDLL) mscoree.lib unicows.lib kernel32.lib advapi32.lib comdlg32.lib shell32.lib oledlg.lib winspool.lib mpr.lib oleacc.lib gdi32.lib msimg32.lib user32.lib \

(此处原文为:

LIBS=$(CRTDLL) $(CRTMDLL) mscoree.lib unicows.lib kernel32.lib gdi32.lib msimg32.lib user32.lib \

其余说明同上)

(3)打开\VC\atlmfc\src\mfcm\INTEL\mfcm80u.def 文件,把第10行的LIBRARY mfcm80u 改为:

LIBRARY mfcm80Lu

打开\VC\atlmfc\src\mfcm\INTEL\mfcm80ud.def文件,把第10行的LIBRARY mfcm80ud改为:

LIBRARY mfcm80Lud

(4)打开\VC\atlmfc\src\mfcm\wfrmcmd.cpp文件,251行的#error Following information required to build private version用//注释掉或者直接把该行删掉;253行的[assembly: AssemblyTitle("")];改为:

[assembly: AssemblyTitle("mfcm80L")];

(5)打开\VC\atlmfc\src\mfcm\interfaces\AssemblyInfo.cpp文件,78行的#error Following information required to build private version用//注释掉或者直接把该行删掉;85行的[assembly: AssemblyTitle("")];改为:

[assembly: AssemblyTitle("mfcm80Lifaces")];

(6)在\VC\atlmfc\src\下建立一个批处理文件:buildmfc.bat,内容为:

nmake -f atlmfc.mak MFC libname=MFC80L

(7)打开Visual Studio 2005 command prompt,进入目录\VC\atlmfc\src\,输入buildmfc执行buildmfc.bat编译MFC库。

编译完成之后,在\VC\atlmfc\src\mfc\intel下有MFC80LU.DLL、MFC80LUD.DLL,在\VC\atlmfc\src\mfcm\INTEL下有MFCM80LU.DLL、MFCM80LUD.DLL,把这4个DLL文件复制到系统目录下;在\VC\atlmfc\lib\INTEL下有MFC80LU.LIB、MFC80LUD.LIB、MFCM80LU.lib、MFCM80LUD.lib,把文件名改为:

MFC80U.LIB、MFC80UD.LIB、MFCM80U.lib、MFCM80UD.lib

把这四个lib文件复制到\VC\atlmfc\lib下覆盖原来的文件就完成了。

posted on 2007-05-15 22:47 daiyie 阅读(1142) 评论(0)  编辑  收藏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib 的目 2009-09-06 16:17 . 2009-09-06 16:17 .. 2006-03-03 23:19 13,712 Bits.Lib 2006-03-03 23:19 4,196 credui.lib 2006-03-03 23:19 57,730 daouuid.lib 2006-03-03 23:19 527,310 ddao35.lib 2006-03-03 23:19 531,012 ddao35d.lib 2006-03-03 23:19 528,038 ddao35u.lib 2006-03-03 23:19 532,702 ddao35ud.lib 2006-03-03 23:19 14,610 WinFax.Lib 2006-03-03 23:19 206,996 GdiPlus.lib 2006-03-03 23:20 27,500 HelpCenterInterfaces.tlb 2006-03-03 23:20 64,608 HelpServiceInterfaces.tlb 2006-03-03 23:21 13,252 p2p.lib 2006-03-03 23:21 11,218 p2pgraph.lib 2006-03-03 23:21 1,380,352 atlsd.pdb 2006-03-03 23:23 121,974 WiaGuid.Lib 2006-03-03 23:23 19,212 WiaScr.Tlb 2006-03-03 23:23 10,152 esebcli2.lib 2006-03-03 23:23 129,732 cdoex.tlb 2006-03-03 23:23 26,608 cdoexm.tlb 2006-03-03 23:23 10,832 exevtsnk.tlb 2006-03-03 23:23 7,888 ActiveDS.Lib 2006-03-03 23:23 99,122 ADSIid.Lib 2006-03-03 23:23 53,222 Wldap32.Lib 2006-03-03 23:23 55,600 CDOSys.Tlb 2006-03-03 23:23 6,254 certadm.lib 2006-03-03 23:23 217,676 certidl.lib 2006-03-03 23:23 59,044 Crypt32.Lib 2006-03-03 23:23 5,516 ComSvcs.Lib 2006-03-03 23:23 75,386 DtcHelp.Lib 2006-03-03 23:23 2,106 Mtx.Lib 2006-03-03 23:23 1,734 mtxdm.lib 2006-03-03 23:23 121,030 Svcguid.Lib 2006-03-03 23:23 63,400 xaSwitch.Lib 2006-03-03 23:23 3,364 xoleHlp.Lib 2006-03-03 23:23 6,402 Icm32.Lib 2006-03-03 23:23 1,978 Icmui.Lib 2006-03-03 23:23 17,036 Mscms.Lib 2006-03-03 23:23 620,890 MMC.Lib 2006-03-03 23:23

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值