您的位置:首页 > 其它

wince中loadcepc.exe的编译经历

2010-05-20 23:33 225 查看
/*******************************************************************
**2007年11月21日记录于ccidnet的BLOG, 2010年5月20日因BLOG搬家转移至此
********************************************************************/

这两天想弄个WINCE的启动界面来盖住CE启动时难看的解压过程, 从网上获取资料说可以通过修改loadcepc.exe来解决(也可以用修改这个来隐藏Jumping to xxxxxx的显示), 在编译的过程中我遇到了不知道多少个错误. 现在终于解决了,开心之余将成果与大家分享一下, 也可以解决遇到此问题的朋友一些方便(其实说白了挺简单,只是摸索的过程有些曲折呵,这里只介绍编译的方法,至于你要修改什么,就知道研读一下源码吧)

1. 首先应该下载16位C编译器,比如MSVC1.52, 并安装.(这个版本是VC系列中最后一个16位的编译器,这东西比较难找到,如果您实在在网上找不到,QQ与我联系,若不在线则mail:shaowei808@163.com告知,我可上QQ传给你,直接mail老是失败又麻烦呵)

2.下载MASM6.11(其他的我不保证行,因为我下过5.0的,编译时通不过, 如果你不想有太多麻烦就直接下6.11 吧哈), MASM安装在C:/下,(如果你安装在了其他地方,要注意修改后面文本中的目录)

3.修改loadcepc.mak,这是一个工程文件,由MSVC1.52来执行.在文章的最后我会贴出修改后的文本, 其中红色的部分为修改过的部分.

4.运行MSVC1.52, Project->Open中选择loadcepc.mak文件,并确定

5.产生loadcepc.exe, 点Project->Build LOADCEPC.EXE, 不出意外的话,您已经在loadcepc目录下产生了一个新的loadcepc.exe.

修改过的loadcepc.mak的文本如下(红色的部分为修改部分,请确定该路径与您软件的路径一致):
!if 0
Copyright (c) Microsoft Corporation. All rights reserved.
!endif
!if 0
Use of this source code is subject to the terms of the Microsoft end-user
license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
If you did not accept the terms of the EULA, you are not authorized to use
this source code. For a copy of the EULA, please see the LICENSE.RTF on your
install media.
!endif
#
#
# Microsoft Visual C++ generated build script - Do not modify
PROJ = LOADCEPC
DEBUG = 0
PROGTYPE = 6
CALLER =
ARGS =
DLLS =
D_RCDEFINES = -d_DEBUG
R_RCDEFINES = -dNDEBUG
ORIGIN = MSVC
ORIGIN_VER = 1.00
USEMFC = 0
CC = cl
CPP = cl
CXX = cl
CCREATEPCHFLAG =
CPPCREATEPCHFLAG =
CUSEPCHFLAG =
CPPUSEPCHFLAG =
FIRSTC = MAIN.C
path = C:/MASM611/BIN;C:/WINCE500/SDK/BIN/I386/X86
FIRSTCPP =
RC = rc
CFLAGS_D_DEXE = /I . /nologo /G2 /W4 /Z7 /Od /D "_DEBUG" /D "_DOS" /D "CEDDK_USEDDKMACRO" /Fc /FR
CFLAGS_R_DEXE = /I . /nologo /Gs /G2 /W4 /Z7 /Ox /D "NDEBUG" /D "_DOS" /D "CEDDK_USEDDKMACRO" /Fc /FR
LFLAGS_D_DEXE = /NOLOGO /NOI /STACK:5120 /ONERROR:NOEXE /CO /MAP /LINE
LFLAGS_R_DEXE = /NOLOGO /NOI /STACK:5120 /ONERROR:NOEXE /CO /MAP /LINE
LIBS_D_DEXE = slibce oldnames
LIBS_R_DEXE = slibce oldnames
RCFLAGS = /nologo
RESFLAGS = /nologo
RUNFLAGS =
LIBS_EXT =
!if "$(DEBUG)" == "1"
CFLAGS = $(CFLAGS_D_DEXE)
LFLAGS = $(LFLAGS_D_DEXE)
LIBS = $(LIBS_D_DEXE)
MAPFILE = nul
RCDEFINES = $(D_RCDEFINES)
!else
CFLAGS = $(CFLAGS_R_DEXE)
LFLAGS = $(LFLAGS_R_DEXE)
LIBS = $(LIBS_R_DEXE)
MAPFILE = nul
RCDEFINES = $(R_RCDEFINES)
!endif
CFLAGS = $(CFLAGS) /I ../../INC
!if [if exist MSVC.BND del MSVC.BND]
!endif
SBRS = MAIN.SBR /
XMSAPI.SBR /
VIDEO.SBR /
PPFS.SBR

TRANSFER_DEP =
MAIN_DEP = loadcepc.h /
xmsapi.h
XMSAPI_DEP = xmsapi.h

VIDEO_DEP = loadcepc.h /
video.h
MDPPFS_DEP = wdm.h /
pc.h

PPFS_DEP = kernel.h

PPFSTOOL_DEP = ppfs.h
ETHMAIN_DEP = loadcepc.h /
smchw.h
all: $(PROJ).EXE $(PROJ).BSC
clean:
del /f /q $(PROJ).exe *.obj *.cod *.sbr
MAIN.OBJ: MAIN.C $(MAIN_DEP)
$(CC) $(CFLAGS) $(CCREATEPCHFLAG) /c MAIN.C
XMSAPI.OBJ: XMSAPI.C $(XMSAPI_DEP)
$(CC) $(CFLAGS) $(CUSEPCHFLAG) /c XMSAPI.C
VIDEO.OBJ: VIDEO.C $(VIDEO_DEP)
$(CC) $(CFLAGS) $(CUSEPCHFLAG) /c VIDEO.C
MDPPFS.OBJ: MDPPFS.C $(MDPPFS_DEP)
$(CC) $(CFLAGS) $(CCREATEPCHFLAG) /c MDPPFS.C
PPFS.OBJ: PPFS.C $(PPFS_DEP)
$(CC) $(CFLAGS) $(CUSEPCHFLAG) /c PPFS.C
DEBUG.OBJ: DEBUG.C $(PPFS_DEP)
$(CC) $(CFLAGS) $(CUSEPCHFLAG) /c DEBUG.C
PPFSTOOL.OBJ: PPFSTOOL.C $(PPFSTOOL_DEP)
$(CC) $(CFLAGS) $(CUSEPCHFLAG) /c PPFSTOOL.C
ETHMAIN.OBJ: ETHMAIN.C $(ETHMAIN_DEP)
$(CC) $(CFLAGS) $(CUSEPCHFLAG) /c ETHMAIN.C
TRANSFER.OBJ: TRANSFER.ASM
C:/MASM611/BIN/masm.exe /c TRANSFER.ASM
$(PROJ).EXE:: MAIN.OBJ XMSAPI.OBJ VIDEO.OBJ MDPPFS.OBJ DEBUG.OBJ PPFS.OBJ PPFSTOOL.OBJ ETHMAIN.OBJ TRANSFER.OBJ $(DEFFILE)
echo >NUL @<<$(PROJ).CRF
MAIN.OBJ +
XMSAPI.OBJ +
VIDEO.OBJ +
MDPPFS.OBJ +
PPFS.OBJ +
PPFSTOOL.OBJ +
ETHMAIN.OBJ +
TRANSFER +
DEBUG.OBJ
$(PROJ).EXE
$(MAPFILE)
$(LIBS)
$(DEFFILE);
<<
C:/MASM611/BIN/link.exe $(LFLAGS) @$(PROJ).CRF
run: $(PROJ).EXE
$(PROJ) $(RUNFLAGS)

$(PROJ).BSc: $(SBRS)
bscmake @<<
/o$@ $(SBRS)
<<
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: