FoolishMan
驱动牛犊
驱动牛犊
  • 注册日期2002-05-10
  • 最后登录2002-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2015回复:11

关于.C 和.cpp的问题

楼主#
更多 发布于:2002-05-28 21:46
我在写硬盘驱动时,调用IoGetConfigurationInformation() 在将其放在.c 结尾的文件时连接能通过,但将其放在 .cpp 为结尾的文件时连接通不过,何因
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-28 22:32

可能的原因太多了。。。。。。。。。

可否,详实点。。。。。。。。。。。。。。

你的编译器?

编译后的提示。。。。。。。。。。。。。

[color=red]大头鬼! :P[/color]
FoolishMan
驱动牛犊
驱动牛犊
  • 注册日期2002-05-10
  • 最后登录2002-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-28 23:08
我用了是VC6。0  提示是
error LNK2001: unresolved external symbol \"__declspec(dllimport) unsigned char __stdcall IoGetConfigurationInformation (enum _INTERFACE_TYPE,unsigned long,union _LARGE_INTEGER,unsigned long *,union _LARGE_INTEGER *)\" (__imp_?HalTranslateBusAddr
FoolishMan
驱动牛犊
驱动牛犊
  • 注册日期2002-05-10
  • 最后登录2002-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-28 23:18
是这个提示
Config.obj : error LNK2001: unresolved external symbol \"__declspec(dllimport) struct _CONFIGURATION_INFORMATION * __stdcall IoGetConfigurationInformation(void)\" (__imp_?IoGetConfigurationInformation@@YGPAU_CONFIGURATION_INFORMATION@@XZ)
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-29 08:35
cpp为后缀是,将函数如此包装:

#ifdef __cplusplus
extern \"C\"
{
#endif

#include \"wdm.h\"

#ifdef __cplusplus
}
#endif

extern \"C\"
{
XXX IoGetConfigurationInformation(XXX)
}
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
James.Ji
驱动老牛
驱动老牛
  • 注册日期2001-09-17
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分-9分
  • 威望-8点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-29 08:52
这个问题我遇到过。

当以.cpp为后最时,不能使用extern \"c\" 声明。
去掉extern \"c\"就可以了。
车到山前必有路。 虽然有些土,却是我最有感触的一句话。
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-05-29 10:23

黑黑。。。。。。。。。。

抛砖引玉。。。抛砖引玉。。。
[color=red]大头鬼! :P[/color]
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2002-05-29 20:12
用户被禁言,该主题自动屏蔽!
FoolishMan
驱动牛犊
驱动牛犊
  • 注册日期2002-05-10
  • 最后登录2002-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-05-29 23:23
tigerzd: 用你提供的方法好像也不行,其提示如下
Config.cpp(19) : error C2732: linkage specification contradicts earlier specification for \'IoGetConfigurationInformation\'
        F:\\520work\\Minimal\\Config.cpp(19) : see declaration of \'IoGetConfigurationInformation\'
不知何因,其主要是连接时找不到库,我看了MSDN文档,但里面没有注明在哪个库中
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-05-30 08:49
IoGetConfigurationInformation在98ddk中根本没有说明, MSDN中说明的原型是PCONFIGURATION_INFORMATION
    IoGetConfigurationInformation();
但连PCONFIGURATION_INFORMATION在DDK和VC中都无定义。
我想是因为这个函数不在DDK库中。

犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
FoolishMan
驱动牛犊
驱动牛犊
  • 注册日期2002-05-10
  • 最后登录2002-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-05-30 18:42
这个函数在2000ddk的头文件中有定义,编译也能通的过,就是连接时找不到该函数,可用c完全正常,难道没有办法了吗,我是个初学者,所看的教材是用c++搭了一个平台,因此只能用.cpp进行编泽,我不知用c如何对驱动程序进行连接,进行测试
FoolishMan
驱动牛犊
驱动牛犊
  • 注册日期2002-05-10
  • 最后登录2002-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-06-02 11:32
大家能不能帮帮忙,我该怎么办
游客

返回顶部