wenjiang 的个人资料morning's blog照片日志列表更多 ![]() | 帮助 |
|
|
9月25日 VC10.0 Beta1比较VC8.0,VC9.0的不可靠的 /MP选项,在10.0 终于可以稳定使用了.
编译时 cl.exe会生成 2~3个进程,基本上把CPU的能量都发挥出来了.编译10几个库文件,节约的时间相当可观.
VCPKG5.3的代码在使用VC6的库文件和VC10.0的编译器情况下,一切OK.当然,那个 crt_ex.lib 是我写的小Patch lib,解决一些函数不存在的问题.
Deleting intermediate files and output files for project 'vcpkg - Win32 Unicode Release'.
--------------------Configuration: vcpkg - Win32 Unicode Release-------------------- Version: VCPKG 5.3(Unicode,Build:Sep 24 2009 16:55:45),Author: morning,EMail: ywjheart@gmail.com Component: WDK/PSDK(CRT6.0,ATL7.1),PSDK2003Feb,DDK2K,WTL8.1,DXSDK9 vcpkg: info: Add Option: /wd4786 vcpkg: info: Add Option: /wd4127 vcpkg: info: Add Option: /wd4201 vcpkg: info: Add Option: /wd4660 vcpkg: info: Add Option: /wd4231 vcpkg: info: Add Option: /D DDKENV_BUILD=1 vcpkg: info: Add Option: /wd4786 vcpkg: info: Add Option: /wd4127 vcpkg: info: Add Option: /wd4201 vcpkg: info: Add Option: /wd4660 vcpkg: info: Add Option: /wd4231 vcpkg: info: Add Option: /D DDKENV_BUILD=1 vcpkg: info: Add Option: /RELEASE vcpkg: info: Add Option: /OPT:REF vcpkg: info: Add Option: /OPT:ICF vcpkg: info: Add Option: /ALIGN:512 vcpkg: info: Add Option: /FILEALIGN:512 vcpkg: info: Add Option: /ignore:4010,4037,4039,4065,4070,4078,4087,4089,4099,4221,4210,4108 vcpkg: info: Delete Option: /pdb:none vcpkg: info: Add Library: crt_ex.lib Compiler: WDK(32bit) Compiling resources... Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1 Copyright (C) Microsoft Corporation. All rights reserved. Compiling... stdafx.cpp Automatically linking with libbasesuwdk.lib Automatically linking with libhooksuwdk.lib Automatically linking with libassuwdk.lib Compiling... AddonHook.cpp BuildHook.cpp CmdAnalyst.cpp compiler.cpp helpex.cpp msdev_patch.cpp util.cpp vcpkg.cpp ComHook.cpp ProcessExitMon.cpp RegMon.cpp varmgr.cpp Generating Code... Linking... Creating library R:\TEMP\Unicode_Release/!vcpkg.lib and object R:\TEMP\Unicode_Release/!vcpkg.exp !vcpkg.pkg - 0 error(s), 0 warning(s) 9月21日 vcpkg 5.3相信很多人都和我一样,正在使用最新的PSDK/MSDN了,但是VC6并不能支持F1键直接查询这些新版帮助的中的信息.
vcpkg5.3 添加一个老版本有的功能,但是这个更强大.
老版本
原理:
采用COM虚函数表覆盖的办法拦截了 对帮助的调用,
功能:
实现 可选的使用VS .net 的帮助,用户可以自定义ms-help 命名空间.
不足:
它依赖于 VC6对应的VSHelp.dll的接口.调用新帮助库时,使用COM接口.
配置方式:
<ExHelp enable="0" url="ms-help://MS.MSDNQTR.v90.chs" />
新版:
原理:
不再需要VSHelp.dll,vcpkg自身包含了相关接口(是的,喜欢清爽的朋友可以立刻去把它删了,哈哈),VC6 IDE调用帮助接口时自动调用VCpkg提供的接口.
由于老版本需要额外的创建新帮助库的实例,需要耗费额外的时间,而这个新版则相对简洁,直接打开用户指定程序.
功能:
实现可选的使用任何帮助,用户可以指定执行文件和参数,根据喜好,可以配置成调用本地的MSDN帮助库,也可以打开网页查询MSDN网站,甚至可以打开网页查询google.com
配置方式:
<ExHelp enable="1" exe="some.exe" url="someurl"/> ,其中 url 部分可包含 $(keyword),调用时会展开成当前需要查询的关键字
例如:
<ExHelp enable="1" exe="D:\tools\MSHelp2\H2Viewer\H2Viewer.exe" url="/appID vchelp /XNav /PageTab 2 /helpcol MS.MSDNQTR.v90.chs /filterquery /index "$(keyword)"" />
无论新老版本,当 enable=0时,不改变VC6的行为,执行默认的帮助调用. 9月18日 Using the Optimizing VC7 compiler with the VC6 IDE,with DEBUGGINGUsing the Optimizing VC7 compiler with the VC6 IDE,with DEBUGGING 2009.09.18 from the source of atl/mfc in vc7x series,wo can see something interesting,that vc7 is able to output pdb files in the format used in vc6,the options is as following: however,vc7 toolset refuse the options if we add to commandline. prepares: start patch: 2. modify the linker
4.in link.exe,search the string ?Open@PDB@@SAHPBD0KPAJQADPAPAU1@@Z ,and change it to ?Open@PDB@@SAHPAD0KPAJQADPAPAU1@@Z 5.copy the mspdb60.dll v6.2 to bin folder. all done.now you can new a console project, and build the debug configuration,open the output file in a hex editor,you can find the signature of the old pdb format,"NB10",set a break in the function "main",and press F5, after break,you can see variables,callstack,and etc.
【原创】让VC7系列生成VC6支持PDB格式,以便VC6IDE可以调试让VC7系列生成VC6支持PDB格式,以便VC6IDE可以调试 我们知道 阅读VC7系列的 atl/mfc 源代码可以看到,VC7似乎具备生成 vc6 pdb文件的能力,其中参数分别是 但是,很遗憾,如果我们把这个参数加上,它们纷纷表示,不认识. 准备工作: 开始修改 2.修改连接器 改成
4.在link.exe中把 ?Open@PDB@@SAHPBD0KPAJQADPAPAU1@@Z 改成 ?Open@PDB@@SAHPAD0KPAJQADPAPAU1@@Z 5.从PSDK/DDK任何能找到 pdb60.dll的地方把 6.2 版的pdb60.dll 拷贝进去
源代码中加上 2. 现在,可以继续使用 VC6这个轻快的IDE,配合VAX的书写代码提示,然后用VC7.1这个更标准的编译器编译了 enjoy it! 9月14日 vcpkg 5.0v5.0 (2009-9-14)
1. 代码重构 1.1 移除 tinyxml,改用自己写的XML处理模块,支持UTF8/UNICODE/ANSI 1.2 去掉了部分不常用特性,例如:dll加密,编译工具替换 1.4 新的命令行词法分析模块,可以通过定义关键字规则/默认规则,较好的分析已知和未知的选项,分解后的结构易于后期处理 1.3 现在内置 类C语言脚本引擎(不区分大小写),取代原来通过XML定义关键字进行编译器选择和命令行修改的方式, 脚本引擎可以访问绝大多数命令行读写操作,实现数据分析和修改 1.2 XML结构配套调整 email me to get the new version. 9月11日 copyanyway写批处理文件时遇到拷贝文件失败的问题,so 写了一个不屈不挠,几乎非拷贝成功不可的batch代码
功能:
拷贝文件,如果目标文件已经存在,则会删除或改名(无法删除时,改名后的文件会在重启后删除)后再进行拷贝
用法:
在批处理文件头部加上
set myrand=selfdel_%random%
set bRestartrun=false 以后可以任意调用 call :copyanyway 文件名 路径 文件名必须是仅名称部分,不含路径
路径不需要加反斜杠结尾
提示:文件名或路径如果包含空格,则必须加上引号
用法举例:
@echo off
set myrand=selfdel_%random% set bRestartrun=false call :copyanyway symbolcheck.dll %windir%\system32
源代码:
rem------------------- copyanyway ------------------------
:copyanyway rem the original code written by morning.ye if exist "%2\%1" ( del /F /Q "%2\%1" >nul if not exist "%2\%1" goto copyanyway_docopy rem try to rename it in rand filename.
if exist "%2\%1.%myrand%.bak" ( del /F /Q "%2\%1.%myrand%.bak" ) if not exist "%2\%1.%myrand%.bak" ( echo ren "%2\%1" "%1.%myrand%.bak" ren "%2\%1" "%1.%myrand%.bak" >nul if not exist "%2\%1" ( call :copyanyway_resartdel "%2\%1.%myrand%.bak" goto copyanyway_docopy ) ) rem try again,i think it should be ok anyway.
if exist "%2\%1.%myrand%.bak.bak" ( del /F /Q "%2\%1.%myrand%.bak.bak" ) if not exist "%2\%1.%myrand%.bak.bak" ( echo ren "%2\%1" "%1.%myrand%.bak.bak" ren "%2\%1" "%1.%myrand%.bak.bak" >nul if not exist "%2\%1" ( call :copyanyway_resartdel "%2\%1.%myrand%.bak.bak" goto copyanyway_docopy ) ) rem failed,display as copy.
echo copy %1 %2\%1 echo 0 file copied. goto :eof ) :copyanyway_docopy echo copy %1 %2\%1 copy /Y %1 %2\%1 goto :eof :copyanyway_resartdel if exist %1 ( call :runonce_batch_append del /F /Q %1 ) goto :eof rem------------------- runonce batch file ------------------------
:runonce_batch_append rem the original code written by morning.ye if "%bRestartrun%"=="false" ( set bRestartrun=true rem empty existed file,and add file head
echo @echo off > "%APPDATA%\%myrand%.bat" rem create loader file,and we don't have to care is wether the selfdel operation has been added in runonce batch file
echo @echo off > "%APPDATA%\%myrand%ldr.bat" rem batfile may be deleted by user,so add self reg cleanup echo reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce /v %myrand% /f >> "%APPDATA%\%myrand%ldr.bat" echo del /F /Q "%APPDATA%\%myrand%.bat" >> "%APPDATA%\%myrand%ldr.bat" echo del /F /Q "%APPDATA%\%myrand%ldr.bat" >> "%APPDATA%\%myrand%ldr.bat" rem create reg runonce info
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce /v %myrand% /d "%APPDATA%\%myrand%ldr.bat" /f >nul ) rem append to batch file echo %* >> "%APPDATA%\%myrand%.bat" goto :eof |
|
|