通过来自64位exe的OLE分派启动32位exe

问题描述 投票:1回答:1

我有一个WPF应用程序编译到ANYCPU目标平台。该应用程序需要启动32位MFC应用程序。我是通过COM Callable包装器来做到这一点的。 COM Callable包装器使用OLE DISPATCH启动exe。如果我在win32中编译COM Wrapper并在x86目标平台中启动WPF应用程序,则32位传统应用程序将成功启动。

如果我编译COM Wrapper x64位,并编译WPF x86,我的WPF应用程序崩溃创建COM Wrapper的对象。

如果我编译COM Wrapper win32和WPF平台目标ANYCPU,我的WPF应用程序再次崩溃。我该如何正确设置?

wpf dll com mfc ole
1个回答
2
投票

您只能使用与当前可执行文件相同的平台位大小的COM。如果您以32位进程运行,则必须使用32位COM包装器。如果您以64位进程运行,则必须使用64位COM包装器。这通常意味着您需要两个单独的应用程序版本,因此您可以定位相应的包装器。

话虽这么说,如果您的唯一目标是启动应用程序(而不是与之交互),您可以使用Process.Start而不是COM包装器来启动它。

© www.soinside.com 2019 - 2024. All rights reserved.