我有程序,我希望看到使用64位的好处,但我有一个32位的第三方DLL。
我可以将程序升级到64位还是一无所有?
如果可以使用混合dll运行,那么下行是什么?
答案 0 :(得分:1)
让我们说你的DLL导出API void foo();
一种迂回方式从64位应用程序调用这个32位函数就是创建一个使用IPC封装这个API的新EXE。
所以你有:
void foo();
foo()
但是它喜欢。现在对于魔术部分,来自2的DLL将从1启动EXE,然后它将使用IPC(可能是命名管道)与该EXE通信并将调用转发给它并返回其结果。
所以你有你的应用程序 - > 64位包装器dll - >命名管道 - > 32位包装器应用程序 - > 32位dll。以这样的方式抽象调用foo();
API就像你的应用程序32位本身一样。显然这是一个很难实现的,所以如果你发现这样做不那么费力,那么考虑重写32位API。