2011-12-13 196 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)或任何其他目录。

相关问题