跟大家确认一下:动态库能不能使用静态库???

khler 2013-11-28 11:13:16
我有一个exe项目AAA,使用了动态库BBB,然后BBB又要引用另一个静态库CCC,我的问题是,动态库是否能引用静态库???
我的动态库BBB在使用静态库CCC时报错了:无法解析的外部符号:

错误 12 error LNK2019: 无法解析的外部符号 "public: __cdecl iKnm::iKnm(void)" (??0iKnm@@QEAA@XZ),该符号在函数 "void __cdecl `dynamic initializer for 'iK''(void)" (??__EiK@@YAXXZ) 中被引用 E:\MCP Prj\MotionCapture-EKF\EKFLib\EKFLib.obj EKFLib
错误 13 error LNK2019: 无法解析的外部符号 "public: __cdecl iKnm::~iKnm(void)" (??1iKnm@@QEAA@XZ),该符号在函数 "void __cdecl `dynamic atexit destructor for 'iK''(void)" (??__FiK@@YAXXZ) 中被引用 E:\MCP Prj\MotionCapture-EKF\EKFLib\EKFLib.obj EKFLib
错误 14 error LNK1120: 2 个无法解析的外部命令 E:\MCP Prj\MotionCapture-EKF\MotionCapture\bin\X64_DEBUG\EKFLib.dll 1 1 EKFLib

...全文
618 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
SKATE11 2013-11-28
  • 打赏
  • 举报
回复
可以的 如果报错的话也应该在编译动态库的时候报错噻
khler 2013-11-28
  • 打赏
  • 举报
回复
AAA、BBB、CCC这些货都是我出,所以CCC必然是静态库。
toofunny 2013-11-28
  • 打赏
  • 举报
回复
可以的。不用确认了。
孤影品茗 2013-11-28
  • 打赏
  • 举报
回复
你确定那货是静态库?文件多大,如果是几十k或者几k,基本确定是动态库的导入库,而不是静态库文件
khler 2013-11-28
  • 打赏
  • 举报
回复
有人跳出来给个明确的说法吗?急啊
khler 2013-11-28
  • 打赏
  • 举报
回复
我在BBB动态库中使用CCC的类是这样使用的: #include "iKnm.h" iKnm iK; 就是报告无法找到iKnm类的构造和析构函数。如果是动态库,报告“无法解析的外部符号”通常是找不到lib或者类没有实现相应的函数实体,但是引用静态库的情况报这个错就抓瞎了,以前没尝试过从动态库中引用静态库函数的情况。
khler 2013-11-28
  • 打赏
  • 举报
回复
已经添加了头文件包含和CCC.lib库引入,且能正确找到CCC.lib,因为在导入lib的地方,我把CCC.lib的名字改成别的名字,如CCC111.lib,报告找不到CCC111.lib,改回CCC.lib就不会报告找不到CCC.lib,说明链接时已经能正确找到CCC.lib。
AndyStevens 2013-11-28
  • 打赏
  • 举报
回复
编译BBB的时候要把CCC一起编译进来
khler 2013-11-28
  • 打赏
  • 举报
回复
结贴!!!!
khler 2013-11-28
  • 打赏
  • 举报
回复
试验了,可以。 直接用静态库中的类申明了一个变量,报告变量的构造函数和析构函数是“无法解析的外部符号”,后来我不用里面的类申明变量,而是在静态库中加了个简单的函数,编译,提示动态库用的运行库是/MTd的,而静态库是/MDd的,把静态库改成/MTd编译通过,用类申明变量,也不报“无法解析的外部符号”了。 何解??? 唯一的解释是VC的错误提示有问题???VC提示貌似几十年来一向如此。。。

24,860

社区成员

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

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