dll名称相同引发的奇葩问题

        前段时间有个同事说他的电脑突然KATE运行提示“试图加载不正确的程序”(或者提示找不到KATE_IPC2251.DLL),而他前一天用的还好好的,其他人的电脑运行都也都是正常的。感觉很奇怪。
        经过几天的反复分析,我发现原来是IPCsubplatform文件夹下的c#库IPCSdk.dll和IPCSubplatform\IPCDLL文件夹下的c++库ipcsdk.dll的名称相同,导致引用冲突了。
所以需要修改其中一个dll的名称,但因为c#的IPCSdk.dll被引用的组件太多了不便修改,所以我决定修改c++的ipcsdk.dll名称。可是我没有该库的源码,只有ipcsdk.h文件和ipcsdk.lib文件,
该c++库ipcsdk.dll是被我的另一个C++库KATE_IPC2251.DLL通过lib文件静态引用的,于是我尝试通过修改lib文件里面的dll名称来改变其依赖的dll名称。没想到还真的成功了。
具体修改方法如下。
1)用文本编辑器打开ipcsdk.lib文件,然后全部替换文件中的ipcsdk.dll名称为ipc_v5.dll(我是直接把ipcsdk字符全部替换为ipc_v5),注意替换的名称长度要和原来的保持一致,不然可能会导致lib文件损坏。
2)保存ipcsdk.lib文件,并重新编译KATE_IPC2251项目。
3)修改IPCSubplatform\IPCDLL目录下的ipcsdk.dll文件的名称为ipc_v5.dll。
大功告成!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值