Dot-Net
64 到 32 位互操作 - 如何?
我需要將一些遺留的 32 位程式碼(我沒有原始碼)集成到項目中,以便可以從 64 位 .NET 程序集中呼叫它。原始程式碼被實現為 DLL 中的 32 位 COM 對象。Windows 不允許從 64 位對象直接呼叫到 32 位對象,因此我正在尋找有關如何處理這種情況的靈感。
如何從 64 位 .NET 程序集訪問舊的 32 位 COM 對象?
更新:我們發現 COM 組件本身是一些 ANSI C 的包裝器,我們為其找到了原始原始碼。我們能夠在 Visual Studio 中將其編譯為原生 64 位 dll,並將其導入 .NET - 抱歉移動了球門柱!
最好的方法是製作一個包含 32 位 DLL 的程序外 COM 伺服器。然後您可以從 64 位程式碼中呼叫它。
這裡是對基本概念的解釋。
您需要做的是創建兩個與 IPC 通信的程序。這樣,一個可以是 32 位的,一個可以是 64 位的。您需要創建一個 32 程序,該程序與 COM 對象連結並通過一些 IPC 機制(例如命名管道)公開其 API。這樣,您的 .NET 程序就可以從另一個程序訪問它。