阅读:3120回复:0
如何使用VC6的工具完成DDK和SDK工程
以下方法是从DDK/SDK附带的源程序中总结而来,与各位朋友分享,希望能对您有点帮助。
开发工具和资源:visual c++6.0, windows server2003 SDK SP1,windows server2003 DDK SP1,DbgView 目标:在VC开发环境中使用SDK/DDK提供的编译环境来编译调试DLL/EXE/SYS(32bit/64bit)工程. 步骤: 1.安装顺序:VC6,SDK,DDK 2.新建一个系统环境变量:DDKROOT=C:\WINDDK\DDK2003(你的DDK安装路径,应与"开始\程序\Developmet Kits\...\"中的编译命令属性设置一致),重起系统 3.注释%DDKROOT%\bin\setenv.bat文件中的第269行,防止在VC调用它时改变当前路径. 4.创建buildsdk.bat和buildddk.bat分别设置SDK和DDK的编译环境,以下为sdk在VC中配置编译方法: 4.1操作VC菜单:[build]\[Configurations],添加以下六项: Win32_Debug Win32_Release x64_Debug x64_Release ia64_Debug ia64_Release 删除原来的Debug,Release项 4.2 操作VC菜单:[Project]\[Settings],点击[General]标签,设置以上六项目的编译命令 Settings for Build command line Rebuild all options -------------------------------------------------------------------- Win32 Win32_Debug: buildsdk.bat w2k chk /a Win32 Win32_Release buildsdk.bat w2k fre /a Win32 x64_Debug buildsdk.bat chk AMD64 /a Win32 x64_Release buildsdk.bat fre AMD64 /a Win32 ia64_Debug buildsdk.bat chk 64 /a Win32 ia64_Release buildsdk.bat fre 64 /a *.bat的大致内容就是调用setenv.bat来设置编译环境的。大致如下: ...... REM Set Compiled Environment call "%MSSDK%\SetEnv" %1 %2 echo Start to compiling and linking... nmake ...... DDK的配置也差不多。 现在,您可以按下Rebuild/build/build all来编译链接您的工程了。在开发dll/exe程序时,可以设置断点来调试。在编译时,应该同时选择一个32/64的条件进行编译(如Win32 Win32_Debug/Win32 x64_Release),如果成功,其他版本也是成功的。在调试时,只要选择一个32bit条件进行调试,成功后其他版本也是成功的。 个人要求: 熟悉makefile/sources的编写规则,如果不熟悉,也没关系,以下提供了一个sample作参考. 编译器的选择说明请参考 (http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vccore/html/vcrefcompileroptionslistedalphabetically.asp) 链接器的选择说明请参考(http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vccore/html/_core_linker_reference.asp) ............... 附件是sample 说明: xdk.dsw: 工作区,作用来管理myddk/mysdk/mydll,您应该双击xdk.dsw来打开sample; buildsdk.bat: 用来编译SDK工程(编译的32/64bit目标),可以在VC的[Project]\[Settings]中看到对它的调用(当前工程是mydll/mysdk时); buildsdkall.bat: 用来编译SDK工程(一次性完成编译所有的ASCII/UNICODE的32/64bit目标),可以在VC的[Project]\[Settings]中的[Win32 All]看到对它的调用(当前工程是mydll/mysdk时); buildddk.bat: 用来编译DDK工程(编译的32/64bit目标),可以在VC的[Project]\[Settings]中看到对它的调用(当前工程是myddk时); buildddkall.bat: 用来编译DDK工程(一次性完成编译所有的32/64bit目标),可以在VC的[Project]\[Settings]中的[Win32 All]看到对它的调用(当前工程是mydll/mysdk时); buildall.exe:buildsdkall.bat/buildddkall.bat调用该程序进行异步编译(因为不能保证同步编译时编译环境的改变).在buildsdkall.bat中,能发现以下方法: REM set CALL_METHOD=call set CALL_METHOD=..\buildall.exe 可以把它改成: set CALL_METHOD=call REM set CALL_METHOD=..\buildall.exe 看看有什么变化 proj_dir.mak: 定义了目标文件的输出路径 OUTDIR_LIB = ..\lib OUTDIR_EXE = ..\tar OUTDIR = dll/exe/sys的目标路径是.\tar;lib的目标路径是.\lib. 如果其子文件夹后缀为_u,表明是UNICODE目标. ddk.txt: 这是份对DDK工程中sources文件的说明书,可以使用DDK编译和链接工具来编译成sys/dll/exe目标. xdk.rar 是sample的导出模板,它不包括.cpp/.c/.h文件,您可以替换成您的工程符号后就可以编译了。 由于篇幅的限制,还有些地方没能解释清楚,如果您感兴趣,可以与我联系:brike.huang@163.com;QQ24558102 |
|
最新喜欢:![]() |