阅读:1175回复:4
为什么没有办法连接DriverEntry??
我写了一个最简单的驱动,使用build工具,环境是ddk2000.为什么总是提示
BUILD: Object root set to: ==> objfre BUILD: /i switch ignored BUILD: Compile and Link for i386 BUILD: Loading e:ddkwin2kbuild.dat... BUILD: Computing Include file dependencies: BUILD: Examining e:ddkprojectdodriver directory for files to compile. e:ddkprojectdodriver - 1 source files (104 lines) BUILD: Saving e:ddkwin2kbuild.dat... BUILD: Compiling e:ddkprojectdodriver directory Compiling - dodriver.cpp for i386 BUILD: Linking e:ddkprojectdodriver directory Linking Executable - sysi386dodriver.sys for i386 link() : error LNK2001: unresolved external symbol _DriverEntry@8 sysi386dodriver.sys() : error LNK1120: 1 unresolved externals BUILD: Done 1 file compiled - 104 LPS 1 executable built - 2 Errors 附件是我写的文件. 里面文件envfile.txt是用set > envfile.txt生成的 请大家帮帮忙!! |
|
沙发#
发布于:2004-02-17 08:30
我写了一个最简单的驱动,使用build工具,环境是ddk2000.为什么总是提示 你的文件扩展名是 .cpp ,需要在 DriverEntry 前面加 extern "C" 让编译器使用c调用方式。 extern "C" ULONG DriverEntry( IN PVOID DriverObject, IN PVOID Argument2 ) { ...... } |
|
|
板凳#
发布于:2004-02-17 09:29
对,记住你用DDK来开发只能用C的方式,除非你用DS
|
|
|
地板#
发布于:2004-02-17 18:28
谢谢大家,问题解决了!!
不过我发现在*.cpp文件中加入extern "C"解决不了问题. 把*.cpp文件的后缀改为*.c之后问题就解决了 不知道这是为什么? [编辑 - 2/17/04 by huweiming268] |
|
地下室#
发布于:2004-02-17 20:26
在你的h文件,
#fidef __cplusplus extern "C"{ #endif ... 函数申明等 ... #ifdef __cplusplus } #endif |
|