当前位置:  开发笔记 > 编程语言 > 正文

从64位进程调用32位代码

如何解决《从64位进程调用32位代码》经验,为你挑选了1个好方法。

我有一个应用程序,我们正试图从32位迁移到64位.它是.NET,使用x64标志编译.但是,我们有大量用FORTRAN编写的DLL编译为32位.FORTRAN DLL中的函数非常简单:将数据放入,将数据拉出; 没有任何状态.我们也不会花很多时间在那里,总共可能有3%,但它执行的计算逻辑非常宝贵.

我可以以某种方式从64位代码调用32位DLL吗?MSDN建议我不能,期间.我做了一些简单的黑客攻击并验证了这一点.一切都会引发无效的入口点异常.到目前为止,我发现的唯一可能的解决方案是为所有32位DLL函数创建COM +包装器,并从64位进程调用COM.这看起来很头疼.我们也可以在WoW仿真中运行这个过程,但是内存上限不会增加,大约1.6gb.

有没有其他方法从64位CLR进程调用32位DLL?



1> John Sibly..:

您需要将32位dll加载到单独的32位进程中,并使64位进程通过进程间通信与其进行通信.我认为没有任何方法可以将32位dll加载到64位进程中.

这里有一篇很好的文章:

从64位代码访问32位DLL


约翰的回答是正确的.在一个进程中无法混合32位和64位模块.你需要开始第二个过程.另见我的回答:http://stackoverflow.com/questions/6523075/how-to-force-net-application-to-run-in-32bit-mode/6533556#6533556
您不一定需要使用COM +包装器,但您确实需要使用32位进程.
推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有