如何将依赖的静态库编译到自己的动态/静态库中?

bandaoyu 2019-01-22 03:32:28
创建了一个工程 backServer, 依赖于静态库 a.lib,b.lib,c.lib。在VS工程中设置附加依赖库添加a.lib,b.lib,c.lib。

编译生成动态库backServer.dll,

发现把backServer.dll给同事用用不起来,还需要将a.lib,b.lib,c.lib库对应的dll库 a.dll,b.dll,c.dll 给同事一起用才可以。

1、这是为什么?

2、我怎么样才能将a.lib,b.lib,c.lib这三个库一起编译进入我的backServer.dll动态库中? 以后只需交付一个

backServer.dll文件即可?

3、将a.lib,b.lib,c.lib这三个库一起编译进入我的backServer.lib静态库中方法是否一样

让我去看书的朋友就不必留言了,适合进阶系统的学习, 时间原因, 目前需要的是解决方案,谢谢大家
...全文
2650 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bandaoyu 2019-01-23
  • 打赏
  • 举报
回复
[color=#FF0000]////////////////////////////重要补充/////////////////////////////

各位不好意思,我用lib.exe 工具查看了之后,发现同事给我的a.lib b.lib c.lib是导入库,不是静态库。
所以只要我把a.lib b.lib c.lib是导入库 换成a.lib b.lib c.lib静态库,这样只需给backserver.dll 而不需要 a.dll b.dll c.dll了吧 我马上去试试

谢谢大家[/color]

[color=#FF0000]////////////////////////////重要补充/////////////////////////////
bandaoyu 2019-01-23
  • 打赏
  • 举报
回复
引用 5 楼 chenxiaohui318 的回复:
你说的对,通常都会提供三个。祝问题早日解决
呜呜呜~ 还指望你帮忙解决来着
bandaoyu 2019-01-23
  • 打赏
  • 举报
回复
引用 2 楼 失散糖 的回复:
另外,如果这3个库都是没有第三方依赖的话,还好办,如果其中有依赖第三方库的话,得用同样的方式加载那些第三方库,并且无法自动处理,必须所有引用的函数名一个个手动搞。
a.lib,b.lib,c.lib没有依赖第三方库,
我怎么样才能将a.lib,b.lib,c.lib这三个库一起编译进入我的backServer.dll动态库中? 以后只需交付一个backServer.dll文件即可?
大苟姬 2019-01-23
  • 打赏
  • 举报
回复
引用 4 楼 bandaoyu的回复:
引用 3 楼 chenxiaohui318 的回复:
区分一下静态库和动态库,引入第三方的静态库时,编译时只需要.h文件和lib文件,而如果你在编译时使用到了.h文件,lib文件和dll文件三个时,这是用了第三方的动态库,这时的lib文件只是一个引导文件,并不是真正的静态库。楼主可以检查一下是不是用的静态库。另外暴力的方法一,把源代码统一一起编译;暴力方法二是把多个dll用工具合成。看楼主说以后交付一个,怎么说都得.h文件lib文件和dll文件三个别人才能用吧。
导入库应该不是必须的,因为我看到C#加载使用动态库时,只需头文件和dll
你说的对,通常都会提供三个。祝问题早日解决
bandaoyu 2019-01-23
  • 打赏
  • 举报
回复
引用 3 楼 chenxiaohui318 的回复:
区分一下静态库和动态库,引入第三方的静态库时,编译时只需要.h文件和lib文件,而如果你在编译时使用到了.h文件,lib文件和dll文件三个时,这是用了第三方的动态库,这时的lib文件只是一个引导文件,并不是真正的静态库。楼主可以检查一下是不是用的静态库。另外暴力的方法一,把源代码统一一起编译;暴力方法二是把多个dll用工具合成。看楼主说以后交付一个,怎么说都得.h文件lib文件和dll文件三个别人才能用吧。
导入库应该不是必须的,因为我看到C#加载使用动态库时,只需头文件和dll
大苟姬 2019-01-23
  • 打赏
  • 举报
回复
区分一下静态库和动态库,引入第三方的静态库时,编译时只需要.h文件和lib文件,而如果你在编译时使用到了.h文件,lib文件和dll文件三个时,这是用了第三方的动态库,这时的lib文件只是一个引导文件,并不是真正的静态库。楼主可以检查一下是不是用的静态库。另外暴力的方法一,把源代码统一一起编译;暴力方法二是把多个dll用工具合成。看楼主说以后交付一个,怎么说都得.h文件lib文件和dll文件三个别人才能用吧。
失散糖 2019-01-22
  • 打赏
  • 举报
回复
另外,如果这3个库都是没有第三方依赖的话,还好办,如果其中有依赖第三方库的话,得用同样的方式加载那些第三方库,并且无法自动处理,必须所有引用的函数名一个个手动搞。
失散糖 2019-01-22
  • 打赏
  • 举报
回复
调查一下memloaddll,把dll文件内的字节作为资源或者数组融在你自己的代码中,用memloaddll去加载。不过这是邪道,而且无法“静态连接动态库”,必须把你用到的函数指针一个个取出,用“动态加载动态库”的思路处理。

64,654

社区成员

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

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