我有一個應用程序,我們試圖從32位遷移到64位。它是使用x64標誌編譯的.NET。但是,我們有大量編譯爲32位的FORTRAN 90編寫的DLL。 FORTRAN DLL中的函數非常簡單:您可以將數據放入數據中;沒有任何狀態。我們也不會在那裏花費很多時間,總共有3%,但是它執行的計算邏輯是非常寶貴的。從64位進程調用32位代碼
我能以某種方式從64位代碼調用32位DLL嗎? MSDN建議我不能,期限。我做了一些簡單的黑客行爲並驗證了這一點。一切都會引發無效的入口點異常。我迄今發現的唯一可能的解決方案是爲所有32位DLL函數創建COM +包裝,並從64位進程調用COM。這似乎很頭疼。我們也可以在魔獸世界模擬中運行這個過程,但是內存上限不會增加,上限爲1.6GB左右。
是否有任何其他方式從64位CLR進程調用32位DLL?
這就是我描述的64位 - > COM - > 32位的事情。在閱讀那篇文章並試圖讓樣本開始工作之後,我決定有一個更好的方法。至少我希望如此。 – 2008-09-24 17:25:13
約翰的答案是正確的。無法在一個進程中混合使用32位和64位模塊。你需要開始第二個過程。另請參閱我的答案在這裏:http://stackoverflow.com/questions/6523075/how-to-force-net-application-to-run-in-32bit-mode/6533556#6533556 – 2011-07-11 09:39:04
你不一定需要使用COM +包裝器,但您確實需要使用32位過程。 – 2012-01-06 02:54:40