我在动态库中包含了一个静态库,请问有办法在动态库中导出静态库中的函数吗?

瞧见风 2010-01-20 11:12:25
如题!
我现在的办法是在动态库中将静态库的函数重新封装一下导出,但这样外面使用时,只能通过我导出的函数调用静态库的函数,(也就是函数名不一样了),怎样可以直接导出,让外界调用时还是用静态库中的函数名字?不知道说清楚了没有!呵呵
...全文
226 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
对象 2011-12-07
  • 打赏
  • 举报
回复
据我个人经验来说,这是无法解决的,我曾经用VTK和QT的静态库尝试全局连接,结果到处是redefination,最后直接跟VTK的开发人员交流,他们说这类问题没法解决,建议我全部用动态的,后来我想出了个无奈地方法,就是手动把VTK中包含冲突的文件全部替换成QT的,最后重新编译生成static lib ,最后问题解决。
twlkhl 2011-12-07
  • 打赏
  • 举报
回复
顶!楼主解决没?我现在遇到了另一问题,假设两个DLL库,a.dll b.dll,它们均链接了静态库文件c.lib,为节省空间和内存,现在做一个x.dll,里面包含a 和 b的静态库 a.lib b.lib及c.lib,这样可以达到目的么?也就是说能使a.lib和b.lib共用同一个静态库c.lib么?可以达到c.lib只被链接一次的目的么?如果可以的话,怎样实现的呢?我感觉c.lib被x.dll静态链接了?那x.dll里面的a.lib和b.lib怎样使用到c.lib的呢?想不通。。。。
twlkhl 2011-12-07
  • 打赏
  • 举报
回复
顶!楼主解决没?我现在遇到了另一问题,假设两个DLL库,a.dll b.dll,它们均链接了静态库文件c.lib,为节省空间和内存,现在做一个x.dll,里面包含a 和 b的静态库 a.lib b.lib及c.lib,这样可以达到目的么?就是能使a.lib和b.lib共用同一个静态库c.lib么?也就是说只链接一次?
twlkhl 2011-12-07
  • 打赏
  • 举报
回复
顶!楼主解决没?我现在遇到了另一问题,假设两个DLL库,a.dll b.dll,它们均链接了静态库文件c.lib,为节省空间和内存,现在做一个c.dll,里面包含a 和 b的静态库 a.lib b.lib及c.lib,这样可以达到目的么?使a.lib和b.lib共用同一个静态库c.lib,也就是说只链接一次?
瞧见风 2010-01-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jixingzhong 的回复:]
同名的话,在dll中会冲突
[/Quote]

对就是冲突了,有没有什么办法?
jixingzhong 2010-01-20
  • 打赏
  • 举报
回复
同名的话,在dll中会冲突
瞧见风 2010-01-20
  • 打赏
  • 举报
回复
举个例子直观的说吧,静态库StaticLib.lib中有一个int Adder(int a,int b)函数。动态库DynamicDll.dll中加载了StaticLib.lib库,主程序main.exe中只加载DynamicDll.dll,我想在主程序使用函数名Adder调用静态库中的那个函数,在动态库中怎样将它导出呢?
我使用extern "C" __declspec(dllexport)int Adder(int a,int b);
会出错MyAdder' : redefinition; different linkage
怎么办呢?
flyerwing 2010-01-20
  • 打赏
  • 举报
回复
好象库摸版项目生成有带的了。

64,685

社区成员

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

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