我有一个应用程序,我们正试图从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?
您需要将32位dll加载到单独的32位进程中,并使64位进程通过进程间通信与其进行通信.我认为没有任何方法可以将32位dll加载到64位进程中.
这里有一篇很好的文章:
从64位代码访问32位DLL