huweiming268
驱动牛犊
驱动牛犊
  • 注册日期2003-12-13
  • 最后登录2004-07-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1175回复:4

为什么没有办法连接DriverEntry??

楼主#
更多 发布于:2004-02-16 21:45
我写了一个最简单的驱动,使用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生成的
请大家帮帮忙!!
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
沙发#
发布于:2004-02-17 08:30
我写了一个最简单的驱动,使用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生成的
请大家帮帮忙!!


你的文件扩展名是 .cpp ,需要在 DriverEntry 前面加
extern "C"
让编译器使用c调用方式。

extern "C"
ULONG
DriverEntry(
IN PVOID  DriverObject,
IN PVOID  Argument2
)
{
 ......
}
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2004-02-17 09:29
对,记住你用DDK来开发只能用C的方式,除非你用DS
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
huweiming268
驱动牛犊
驱动牛犊
  • 注册日期2003-12-13
  • 最后登录2004-07-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-02-17 18:28
谢谢大家,问题解决了!!
不过我发现在*.cpp文件中加入extern "C"解决不了问题.
把*.cpp文件的后缀改为*.c之后问题就解决了
不知道这是为什么?

[编辑 -  2/17/04 by  huweiming268]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-02-17 20:26
在你的h文件,
#fidef __cplusplus
extern "C"{
#endif

...
函数申明等
...

#ifdef __cplusplus
}
#endif
游客

返回顶部