c++中调用c库

Martian158 2012-05-15 09:56:12
自己编译生成的c的lib,这些lib里有头文件a.h b.h等。
(a.h中有函数aa(),b.h里有函数bb(),bb()里调用了函数aa())
每个头文件中都在函数申明前加了
#ifdef __cplusplus
extern "C" {
#endif
函数声明
#ifdef __cplusplus
};
#endif
我在另一个c++工程里,需要调用c的这个lib
在cpp文件中添加了
extern "C" {
#include "b.h"
}
结果重新生成时报错:
error LNK2019: 无法解析的外部符号 _aa,该符号在函数 _bb 中被引用
百试不得解,求助
...全文
207 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Martian158 2012-05-18
  • 打赏
  • 举报
回复
已解决,是由于拷贝lib时,少拷贝了一个lib。导致函数名找不到
酱油党 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

dumpbin.exe
[/Quote]解释下,是个用于查看的工具!~查看下内部到底有啥东东在进一步判断
W170532934 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

再加上#include "a.h"
[/Quote]
试试看
帅得不敢出门 2012-05-15
  • 打赏
  • 举报
回复
在头文件中加了extern "C" 后, 再include它时就没有必要再extern "C" 了。
有没有可能你的a.c没有编译到lib中。
lazy_2010 2012-05-15
  • 打赏
  • 举报
回复
怀疑你生成 .lib 的时候,没有把 a.c 包含在内
Red_angelX 2012-05-15
  • 打赏
  • 举报
回复
再加上#include "a.h"
酱油党 2012-05-15
  • 打赏
  • 举报
回复
你把a.h包含了试试,应该不会有问题才对,
还有,既然是C了,如果不是有很多把a和b合起来吧
赵4老师 2012-05-15
  • 打赏
  • 举报
回复
dumpbin.exe
langeldep 2012-05-15
  • 打赏
  • 举报
回复
你编译的是windows的WIN32动态库吧 ? 没有显示导出函数。 __dllexport 函数名

64,648

社区成员

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

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