2011-12-13 195 views
3

我有32位應用程序使用32位第三方庫。現在我必須使我的應用程序爲64位,以便它可以利用64位地址空間(大內存)。 既然不能32位的庫加載到64位應用程序,我想創造過第三方庫的32位可執行文件的包裝和使用IPC(命名管道/插座)我的64位應用程序進行通信。 所以我的問題是他們在這樣做的任何問題? 另外,如果我必須在64位系統上安裝我的應用程序,與我的應用程序相關的所有文件將被複制到「c:\ Program Files」目錄。現在我可以保留我的32位第三方exe包裝在相同的「c:\ Program Files」或我需要複製到「c:\ Program Files(x86)」目錄?64位應用程序與32位進程通信

+0

共用存儲器(經由存儲器映射文件)可能是用於數據最快的選項。 32位和64位之間 –

+0

@AlexeyFrunze共享存儲器似乎可疑我:「當使用共享存儲器,請注意,在一個32位的處理的結構可具有比相同的結構不同的尺寸和佈局中一個64-對於包含指針或句柄的結構尤其如此。「 http://msdn.microsoft.com/en-us/library/windows/desktop/ee872017(v=vs.85).aspx – ToolmakerSteve

回答

3

這正是Microsoft爲這類問題推薦的方式。如果你正在使用COM,你可以使COM exe服務器。對於.NET使用WCF。在你的情況下 - 本機C++,沒有COM - 內存映射文件或管道是一個不錯的選擇。

關於安裝目標文件夾 - 您需要使用用於構建安裝包的工具進行測試。如果整個安裝目標是64位,而單個可執行文件是32位 - 則該工具可能會顯示關於此文件的警告。當執行文件,這不要緊,無論是在程序文件或程序文件(x86)或任何其他目錄。

相關問題