64 位应用程序与 32 位进程通信

发布于 2024-12-20 23:58:21 字数 333 浏览 0 评论 0原文

我有使用 32 位第三方库的 32 位应用程序。现在我必须将我的应用程序设为 64 位,以便它可以利用 64 位地址空间(大内存)。 由于我无法将 32 位库加载到 64 位应用程序进程中,因此我正在考虑在第三方库上创建 32 位可执行包装器,并使用 IPC(名为管道/套接字)从我的 64 位应用程序进行通信。 所以我的问题是他们这样做有什么问题吗? 此外,如果我必须在 64 位系统上安装我的应用程序,与我的应用程序相关的所有文件都将复制到“c:\Program Files”目录。现在我可以将 32 位第三方 exe 包装程序保留在同一个“c:\Program Files”中,还是需要复制到“c:\Program Files(x86)”目录?

I have 32 bit application using 32 bit third party library. Now I have to make my application 64 bit , so that it can take advantage of 64 bit address space ( large memory ).
Since I can not load 32bit library into 64bit application process, I am thinking of creating 32bit executable wrapper over third party library and communicate from my 64 bit app using IPC ( named pipe/socket ).
So my question is would their any issue in doing so ?.
Also if I have to install my application on 64 bit systems, all files related to my application will be copied to "c:\Program Files" directory. Now can I keep my 32 bit third party exe wrapper in the same "c:\Program Files" or I need to copy to "c:\Program Files(x86)" directory ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

女皇必胜 2024-12-27 23:58:21

这正是 Microsoft 针对此类问题建议的方法。如果您使用 COM,则可以创建 COM exe 服务器。对于.NET,请使用WCF。在您的情况下 - 本机 C++,没有 COM - 内存映射文件或管道是一个不错的选择。

关于安装目标文件夹 - 您需要使用用于构建安装包的工具对此进行测试。如果整个安装目标是 64 位,并且单个可执行文件是 32 位 - 该工具可能会显示有关此文件的警告。当文件被执行时,无论它是在 Program Files 还是 Program Files (x86),或者任何其他目录中,都无关紧要。

This is exactly the way Microsoft recommends for such kind of problems. If you are working with COM, you can make COM exe server. For .NET use WCF. In your case - native C++, no COM - memory-mapped file or pipe is a good choice.

Regarding installation destination folder - you need to test this with the tool used to build installation packages. If the whole installation target is 64 bit, and single executable is 32 bit - the tool may show warning about this file. When the file is executed, it doesn't matter whether it is in Program Files or Program Files (x86), or any other directory.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文