加一些链接选项,复制如下进去: /machine:IX86 /driver /subsystem:native /SECTION:INIT,d /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 删除如下选项: /subsystem:windows /machine 代表目标机器类型,/driver 代表驱动,/subsystem:native 也是代表驱动。 OK,大功告成,我们可以编译 32 位驱动了! 那么如果我们要编译 64 位驱动呢? 这里大家注意一下,64 位有两种,一个是 AMD64, 一个是 IA64,要选定你的目标平台,目前 AMD64 平台最为流行。 其实编译成 64 位也很简单, 只要把 32 位的配置稍微改一下就行了, 我们以编译 AMD64 位驱动为例(你会复制 VC 的工程 Configurations 吧, 32 位的 Relase, 把 Debug 各复制一份 改名为 ReleaseAMD64 和 DebugAMD64,然后在复制品的基础上修改): 1.要修改两个 lib 路径: C:\2003DDK\LIB\CRT\I386 改为:C:\2003DDK\LIB\CRT\amd64 C:\2003DDK\LIB\WNET\I386 改为:C:\2003DDK\lib\wnet\amd64 2.修改编译器路径: C:\2003DDK\BIN\X86
改为: C:\2003DDK\bin\win64\x86\amd64 C:\2003DDK\BIN\X86 //这句也要存在 3.修改 C/C++里的 Preprocesser definitions 为: ReleaseAMD64 下输入: _AMD64_,AMD64,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,NDEBUG DebugAMD64 下输入: _AMD64_,AMD64,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,_DEBUG 4.需要修改 link 页里的 Project Options,手动改一下:将/machine:IX86 改为: /machine:amd64 5.理论上到这里设置就 OK 了,不过还是有一个链接错误 unresolved external symbol __security_cookie ,只要在链接的 lib 里加入 bufferoverflowK.lib (为什么是 bufferoverflowK.lib?看这里:support.microsoft/kb/894573) 就可以了。 我修改的工程范例下载:下载地址。 以上的设置大部分都可以保存在 VC 工程文件(*.dsp)里,除了设置的 include 路径, lib 路径和
编译器路径,这些路径是全局的,在打开另一些工程也会留下了,就会给编译应 用程序带来麻烦, 还需要一个一个改回去, 而目录切换器就是为了快速切换这些路径而开发 的。