SO中符号未定义问题 和 头文件.h的作用问题

肥多罗 2010-04-26 04:01:59
类A
包含接口文件.h
打开B的SO文件,想获取B的Init接口
-----------------------------------------------
接口文件.h
包含 B.h
定义一个B的变量
B g_B;
extern "C" int Init()
{
return g_B.Init();
}
------------------------------------------------------------
类B
里面有个函数 int Init()

------------------------------------------------------------
问题: 编译通过,运行时提示说类B未定义 即undefined symbol

但是要是将接口文件改成.h和.cpp,将声明和定义放在两个文件中,运行就没问题了,即
接口文件.h
内容:
包含B.h
extern "C" int Init();
接口文件.cpp
内容:
包含接口文件.h
B g_B;
extern "C" int Init()
{return g_B.Init();}

莫非头文件定义的函数在.o中不存在? 麻烦大家说说看了 谢谢大家
...全文
479 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
肥多罗 2010-05-04
  • 打赏
  • 举报
回复
结了 没什么理想答案
肥多罗 2010-04-29
  • 打赏
  • 举报
回复
没人顶。。。。。。。。
肥多罗 2010-04-27
  • 打赏
  • 举报
回复
有其他文件会引用这个头文件。。。
就是讨论了解下 头文件中定义的变量在编译过程中会怎样的?
肥多罗 2010-04-27
  • 打赏
  • 举报
回复
不是吧。。。。倒。。。
kingstarer 2010-04-27
  • 打赏
  • 举报
回复
昨天没看清楚

LZ把代码全放头文件 那是怎么编译的?
kingstarer 2010-04-27
  • 打赏
  • 举报
回复
我这边无论放在头文件还是cpp文件均编译通过

不知道你是怎么编译的
kingstarer 2010-04-26
  • 打赏
  • 举报
回复
这么简单 应该不会出错啊 难道又是传说中的符号问题?

明天我试试
肥多罗 2010-04-26
  • 打赏
  • 举报
回复
恩 头文件中如果定义变量的话,在链接时变量会怎样存在呢
codecola 2010-04-26
  • 打赏
  • 举报
回复
建议:
头文件用于声明而不是用于定义

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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