insist
驱动牛犊
驱动牛犊
  • 注册日期2003-05-09
  • 最后登录2004-05-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1183回复:6

ddk编程中的link错误是为什么呀?

楼主#
更多 发布于:2003-05-15 11:43
  
我用的是nmake类工程类型,也就是说:是.c文件,不是.cpp.
有一个文件:a.h
extern
PVOID
test1();
a.c内容如下:
#include \"a.h\"
PVOID
test1()
{
};
另一个b.c中
#include \"a.h\"
driverentry()
{
  test1();
}
出现如下错误:

error LNK2001: unresolved external symbol _test1@0
是为什么呀?请高手赐教。
yyhabc
驱动小牛
驱动小牛
  • 注册日期2003-01-06
  • 最后登录2013-03-18
  • 粉丝0
  • 关注0
  • 积分327分
  • 威望47点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-15 14:02
你声明test1是外部调用,可是,linker找不到饱含着个模块的lib.
insist
驱动牛犊
驱动牛犊
  • 注册日期2003-05-09
  • 最后登录2004-05-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-15 15:20
那怎么样成为内部调用呢?多谢指教。
qinxg
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分37分
  • 威望27点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-15 15:34
是不是a.c没有加入sources
yyhabc
驱动小牛
驱动小牛
  • 注册日期2003-01-06
  • 最后登录2013-03-18
  • 粉丝0
  • 关注0
  • 积分327分
  • 威望47点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-15 16:47
首先你要确定这个模块在什么lib里,然后再sources里的targetlib李加入这项就行了。
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-15 19:59
没必要用extern吧,删掉之,把a.c加到source里去就行啦
kono1980
驱动牛犊
驱动牛犊
  • 注册日期2003-04-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-16 00:05
这种情况我也遇到过。归纳起来有1.头文件里声明的函数原型参数和source文件中声明的参数不一致 2.要说在头文件里面没声明那是不可能的,因为那样根本通不过编译,在source文件里没有声明那是可能的 3.头文件和source文件中声名的函数返回类型不一致。你可以查一查,这些大部分是由于粗心造成的。
游客

返回顶部