C++编译问题求教!!!!!!!!!!!!!!!!!!!

longyuetian 2003-08-19 01:51:47
操作系统VxWorks,编译器Gcc2.96下的一段源码:

template<class T>
class ObjVar : public ObjBase
{
ObjVar(const ObjVar<T>& r) : ptr_(r.ptr_) { DCORBADuplicate(ptr_); }
  ......

上面是一个模板类中的一段代码,编译时通过,连接时出现一下错误:
d:\DeltaCORBA1.0\DCORBA\vproj\SIMNTgnu\d:\DeltaCORBA1.0\DCORBA\include\ORB\Template.h:629:
undefined reference to `clDescTblNumEnt'
d:\DeltaCORBA1.0\DCORBA\vproj\SIMNTgnu\d:\DeltaCORBA1.0\DCORBA\include\ORB\Template.h:629:
undefined reference to `clDescTbl'
d:\DeltaCORBA1.0\DCORBA\vproj\SIMNTgnu\d:\DeltaCORBA1.0\DCORBA\include\ORB\Template.h:629:
undefined reference to `mClBlkConfig'
d:\DeltaCORBA1.0\DCORBA\vproj\SIMNTgnu\d:\DeltaCORBA1.0\DCORBA\include\ORB\Template.h:629:
undefined reference to `sysClDescTblNumEnt'
d:\DeltaCORBA1.0\DCORBA\vproj\SIMNTgnu\d:\DeltaCORBA1.0\DCORBA\include\ORB\Template.h:629:
undefined reference to `sysClDescTbl'
d:\DeltaCORBA1.0\DCORBA\vproj\SIMNTgnu\d:\DeltaCORBA1.0\DCORBA\include\ORB\Template.h:629:
undefined reference to `sysMclBlkConfig'

请问是什么原因?该怎么解决?谢谢:)
...全文
25 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
longyuetian 2003-08-27
  • 打赏
  • 举报
回复
请各位恕罪,我确实没有表述清楚,该段代码位于一个头文件内,即template.h,这个文件是没有实现文件的,因为每个操作的定义在头文件中都有,但是编译器找不到。
bm1408 2003-08-20
  • 打赏
  • 举报
回复
agree up!

你没把问题说清楚,我这里只作了常见这类问题的假设:

1. 我猜你的这个 "Template.h" 应该是库的头文件,然而该库的 source code 或 .LIB 文件不在编译器的搜索路 径下,或者你没有显示地把相应的 source code 或 .LIB 文件加入到你的 project 中;

2. 这个 "Template.h" 函数库是 C 语言库,如果你在没有 source code 的情况下使用这些函数,在连接时会有不识别名的错误,此时你应该考虑这样用
#ifdef __cplusplus
extern "C" {
#include "Template.h"
}
#endif // __cplusplus.

其它,如果你用的编译是 GNU C++,编译 C++ 代码时,请用 g++ 。 或者还有别的原因,我就不作所有的假设了,希望对你有用。
Wolf0403 2003-08-20
  • 打赏
  • 举报
回复
绝对不是缺少头文件:)有原型而没有定义。1楼的已经把问题解释清楚了
vcforever 2003-08-20
  • 打赏
  • 举报
回复
缺少某个头文件!
kenkrizzard 2003-08-19
  • 打赏
  • 举报
回复
按照出错提示的意思是说你的引用没有被定义.可是我猜可能是你的某些文件(比如头文件,模板库文件)的目录没有设置正确,所以引用找不到解释就会出错.
kenkrizzard 2003-08-19
  • 打赏
  • 举报
回复
按照出错提示的意思是说你的引用没有被定义.可是我猜可能是你的某些文件(比如头文件,模板库文件)的目录没有设置正确,所以引用找不到解释就会出错.
aflyinghorse 2003-08-19
  • 打赏
  • 举报
回复
同意楼上

undefined reference to `sysMclBlkConfig'
链接时出现这类错误,是因为没有找到与声明
相对应的实现,即没找到定义
zss6587 2003-08-19
  • 打赏
  • 举报
回复
你没把问题说清楚,我这里只作了常见这类问题的假设:

1. 我猜你的这个 "Template.h" 应该是库的头文件,然而该库的 source code 或 .LIB 文件不在编译器的搜索路 径下,或者你没有显示地把相应的 source code 或 .LIB 文件加入到你的 project 中;

2. 这个 "Template.h" 函数库是 C 语言库,如果你在没有 source code 的情况下使用这些函数,在连接时会有不识别名的错误,此时你应该考虑这样用
#ifdef __cplusplus
extern "C" {
#include "Template.h"
}
#endif // __cplusplus.

其它,如果你用的编译是 GNU C++,编译 C++ 代码时,请用 g++ 。 或者还有别的原因,我就不作所有的假设了,希望对你有用。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧