VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1767|回复: 3

静态库互相链接

[复制链接]
80_avatar_middle
最佳答案
0 
online_vip 发表于 2021-7-19 15:56:22 | 显示全部楼层 |阅读模式
a库 有 动态跟静态 2个版本

我自己写了   b静态库, 对a进行了包装,  

问题来了


新建控制台项目 c ,   编译的时候 把 a,b库的lib目录都放进去,  
如果 a库用的动态链接, 那么能正常编译成功运行
如果 a库用的静态链接, 会提示 b 库 无法解析a库函数的符号,

请问这种应该问题原因是什么,  我尝试网上说的 把  a,b静态库合并成一个,  还是报相同的错误




上一篇:编译错误
下一篇:vs2919
31_avatar_middle
最佳答案
62 
在线会员 发表于 2021-7-19 19:20:53 | 显示全部楼层
我模拟了一下你的场景,完全没有问题!
“a,b静态库合并成一个,  还是报相同的错误",这就不应该,主要问题可能是这儿引起的。
静态库互相链接
项目文件:
静态库互相链接 Lib_test.7z (102.39 KB, 下载次数: 0)
51_avatar_middle
最佳答案
90 
online_admins 发表于 2021-7-19 20:27:25 | 显示全部楼层
可能是楼主还是没正确连接 a 的静态库版本,或者即使链接了 a 的静态库 lib,但是少定义了某些宏,比如 gzip 的静态库,直接把静态库 lib 链接到exe工程中之后还是不行的,需要定义一个宏才行,不然还是会报某个函数链接错误
80_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-7-20 15:09:39 | 显示全部楼层
Syc 发表于 2021-7-19 20:27
可能是楼主还是没正确连接 a 的静态库版本,或者即使链接了 a 的静态库 lib,但是少定义了某些宏,比如 gzi ...

果然是  某某 宏定义的问题,  静态库编译需要额外加宏,
那有个新问题,   
第三方库 只有一个    release的静态库 (测试应该是 /MT 这个编译)
那这样我好像只能跟他一样 release下 改成这个/MT 来编写程序?, 不然vs提示 类似下面的错误
严重性        代码        说明        项目        文件        行        禁止显示状态
错误        LNK2038        检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”(ConsoleTest.obj 中)        ConsoleTest        E:\vsproject\weblearn\ConsoleTest\nativehost.lib(fxr_resolver.obj)        1       


我在 release下现在可以了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-12-3 18:23

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表