VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 2275|回复: 4

C++如何部分库使用静态链接,部分使用动态链接?

[复制链接]
90_avatar_middle
最佳答案
0 
在线会员 发表于 2022-3-5 22:11:46 | 显示全部楼层 |阅读模式
请教各位大神,C++如何部分库使用静态链接,部分使用动态链接?

比如:
1、使用VS2010编写MFC程序,调用了A_lib和B_lib,如何A_lib采用静态链接的方式,B_lib使用动态链接的方式,使得编译出来的exe程序不需要依赖A_dll,但是依赖B_dll;

2、使用VS2010+Qt编写应用程序,如何Qt相关的库采用动态链接,其它库采用静态链接。使得编译出来的exe需要依赖Qt相关的dll,但是不需要依赖其它dll。

感谢各位大神!




上一篇:新手菜鸟求解惑,关于cout输出控制setiosflags
下一篇:自定义Visual Studio 2017字体、颜色
15_avatar_middle
最佳答案
0 
在线会员 发表于 2022-3-7 09:12:17 | 显示全部楼层
大家好,我来签到了
60_avatar_middle
最佳答案
4 
在线会员 发表于 2022-3-7 16:47:59 | 显示全部楼层
理论上来说,为了避免软件在其他地方调用出现缺库缺dll的类似问题,如果库写的不太好又没有提示,报错很恼火,推荐都用静态引用,就是把lib一起干进项目。如果你确实只是个别想用dll这种,那就显示调用呗,直接手动载入dll然后去实现函数表。
90_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-3-16 09:39:57 | 显示全部楼层
netforfun 发表于 2022-3-7 16:47
理论上来说,为了避免软件在其他地方调用出现缺库缺dll的类似问题,如果库写的不太好又没有提示,报错很恼 ...

请问具体要怎么操作呢?谢谢!
60_avatar_middle
最佳答案
4 
在线会员 发表于 2022-3-18 09:17:49 | 显示全部楼层
孤独求败 发表于 2022-3-16 09:39
请问具体要怎么操作呢?谢谢!

静态引用的前提是你调用的那个库就是个静态lib库工程,具体你看新建工程选项就有选择最终编译是一个静态引用的lib文件,然后你把头文件和lib都干进项目编译就完事了,这个就一个弊端就是exe会因lib原因文件比较大。动态引用前提是你调用的那个库是个动态dll库工程,最终编译是一个lib和一个dll文件,这个又分两种调用模式,隐式调用用lib和头文件可以像静态引用一样编译,但是运行时离不开dll因此报错时候会可能一头雾水,显示调用用你自己一点一点写载入dll释放dll和具体每个函数的实现别名然后可以通过每次调用插入检测机制提示用户缺少哪个dll等等软件会显得比较好用。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

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

关闭

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

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

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

Powered by CcTry.CoM

© 2009-2021 cctry.com

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