前段时间有个同事说他的电脑突然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。
大功告成!!!
dll名称相同引发的奇葩问题
最新推荐文章于 2023-07-30 07:30:00 发布