如果你的32bit模块是可执行文件,恭喜, wow64可以完全运行你的程序。
如果你的32bit模块是有源代码的,没有嵌入的x86也恭喜,你设置到64bit的编译环境编译到64bit就可以了,一只需要少少修改.
如果你没有源代码,只有编译好了的dll,那就麻烦了,文档和实践都说明:
1. 64bit的进程不能加载32bit的dll
2.32bit的进程不能加载64bit的dll.
我对这两点持怀疑态度,虽然我也经了实践证明.
但应该我想还有办法的,可是我现在没有找到,没有想到,起码,内核状态的驱动文件可以同时让32和64bit的程序进行访问, 通过同一个ioctl码, 并且,内核驱动可以知道这个进程是32bit或64bit的。
ok, 先不管,现在暂时想到的方法,使用ipc进行代理,如socket, lpc/rpc, dcom等,让32bit和64bit的进程间进行通讯,从而达到目的.
我使用过socket进行进程间通讯, 麻烦。
COM也是比较麻烦,这里也有一些有趣的问题,稍后我们讨论.
64位与32位程序兼容之道
本文探讨了64位系统下运行32位模块的各种情况及解决方案,特别是针对无源代码的32位DLL无法直接被64位进程加载的问题,提出了使用IPC进行代理的方法。
1923

被折叠的 条评论
为什么被折叠?



