标题:[求助]求高手进来帮忙解决下库冲突的问题
只看楼主
kickcat518
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-3-22
 问题点数:0 回复次数:0 
[求助]求高手进来帮忙解决下库冲突的问题
本人搞数值模拟的,不是编程高手,最近遇到点棘手的问题,想请高手帮下。
我的程序中经常要用到数据绘图库MatFor 4.1来现场检验计算结果是否正确。因为MatFor只支持动态连接,每次编出来的程序要弄到另一台电脑上都要顺带拷贝它的一大堆dll,很不爽。所以我想着把这个数据绘图库转换为静态库。于是,我就用Dll2Lib这个工具把它的那些dll统统转换为Lib,这个过程比较麻烦,也补充了很多系统API 所对应的静态Lib(如Kernel32.lib, Shell32.Lib等),最后只剩下stlport_vc645.lib这个库了,它里面有三个函数调用了MSVCP60.DLL这个动态库。因此,在我的示例工程中(VS2005),显示了三个连接错误(未解决的外部函数),如图1

用Viewdll.exe这个工具察看stlport_vc645.lib的原型stlport_vc645.dll,可以发现这三个未解决函数引用于MSVCP60.DLL,如图2
 
利用Viewdll.exe这个工具察看MSVCP60.DLL,可以发现这三个函数的索引为169, 170, 272
 
因此,我同样的也用Dll2Lib把MSVCP60.DLL转换为静态版的MSVCP60.Lib。可是,当我把做好的MSVCP60.Lib加入编译器的链接路径时,这三个未解决的外部函数得到了解决,但同时又出现了一大堆链接错误,主要是MSVCP60.Lib中的很多函数与Matfor库所提供的函数冲突,如图3所示
 

问题说到这,其症结可归纳于,在MatFor 4.1所提供的动态链接库中,对于MSVCP60.DLL的调用是“随用随取”,MSVCP60.DLL中的不相关的函数并没有参与运行。而在我的静态库改造中,各个静态库lib所提供的函数都要同时摆上台面参与链接,当有重名的函数时,冲突就产生了。
    所以,这里请问各位高手,能否有某种工具将MSVCP60.DLL中的这三个函数提取出来生成单独的obj或lib,或是能否有某种方法将MSVCP60.DLL中的不相关函数给屏蔽掉?
望高手不吝赐教。本求助所涉及的文档都列于附件压缩包中。同时附上那三个未解决外部函数的名称。

[attach]69556[/attach]
关于连接库发生冲突的问题.rar (1020.5 KB)


[ 本帖最后由 kickcat518 于 2013-3-23 07:10 编辑 ]
搜索更多相关主题的帖子: 编程高手 台电脑 动态 
2013-03-22 16:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-401589-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035954 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved