一个C++项目, 已有一些静态库(.lib)和所有的函数声明(.h),怎么生成一个动态库(dll)
4个回答
展开全部
link /lib /list xxx.lib
可以列出这个lib文件里的所有obj文件
link /lib /extract:xxx.obj xxx.lib
可以从lib里拆解出一个obj文件
配合/nologo参数和for命令
把里面的obj文件全部拆出来
for /f "delims=" %a in ('link /lib /list /nologo xxx.lib') do link /lib /extract:"%a" xxx.lib
然后根据.h文件自己写个def文件,用link重新链接一下就行了。
def文件还是要自己写的……
或者你看看能不能用dumpbin把lib导出的函数名字都列出来,然后处理一下做成def文件
可以列出这个lib文件里的所有obj文件
link /lib /extract:xxx.obj xxx.lib
可以从lib里拆解出一个obj文件
配合/nologo参数和for命令
把里面的obj文件全部拆出来
for /f "delims=" %a in ('link /lib /list /nologo xxx.lib') do link /lib /extract:"%a" xxx.lib
然后根据.h文件自己写个def文件,用link重新链接一下就行了。
def文件还是要自己写的……
或者你看看能不能用dumpbin把lib导出的函数名字都列出来,然后处理一下做成def文件
展开全部
建一个dll工程,然后把.lib静态库加进去,将.lib静态库中所有的导出函数用另一个新函数封装一下,并把这些新函数导出.这样就形成一个新的有.lib静态库相同功能的dll了.
追问
太麻烦了, 函数太多了。。。, 而且这样生成的函数调用时要寻址两次
追答
使用函数指针的全局变量,将这些变量赋值成lib静态库中的值,然后导出这些变量.
关于函数太多,那我也没其它方法.很显然,你必须得知道你要导出的函数列表才行.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是指你得到的静态库做成动态库嘛
据我所知没办法
当你在用SDK时基本都会提供动态库与静态库
你必须要知道静态库源码才能去重新编译成动态库
据我所知没办法
当你在用SDK时基本都会提供动态库与静态库
你必须要知道静态库源码才能去重新编译成动态库
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-01-03
展开全部
动态链接库是要自己写代码的,你这个是别人的。lib文件啊~
追问
我的意思就是把lib变成dll, 函数都是Lib里面的函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询