我有一個(gè)應(yīng)用程序正在嘗試從32位遷移到64位。它是使用x64標(biāo)志編譯的.NET。但是,我們有大量用FORTRAN 90編寫的DLL都是為32位編譯的。FORTRAN DLL中的功能非常簡(jiǎn)單:將數(shù)據(jù)放入,將數(shù)據(jù)拉出;沒(méi)有任何狀態(tài)。我們也沒(méi)有花太多時(shí)間,總計(jì)可能只有3%,但是它執(zhí)行的計(jì)算邏輯是無(wú)價(jià)的。我可以通過(guò)64位代碼以某種方式調(diào)用32位DLL嗎?MSDN建議,我不能這樣做。我已經(jīng)做了一些簡(jiǎn)單的黑客攻擊,并對(duì)此進(jìn)行了驗(yàn)證。一切都會(huì)引發(fā)無(wú)效的入口點(diǎn)異常。到目前為止,我發(fā)現(xiàn)的唯一可能的解決方案是為所有32位DLL函數(shù)創(chuàng)建COM +包裝器,并從64位進(jìn)程中調(diào)用COM。這似乎很頭疼。我們也可以在WoW仿真中運(yùn)行該過(guò)程,但隨后不會(huì)增加內(nèi)存上限,將內(nèi)存上限限制為1.6gb。還有其他方法可以從64位CLR進(jìn)程調(diào)用32位DLL嗎?
從64位進(jìn)程中調(diào)用32位代碼
明月笑刀無(wú)情
2019-12-13 13:10:12