1

我有一个编译到 ANYCPU 目标平台的 WPF 应用程序。此应用程序需要启动 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 应用程序再次崩溃。如何正确设置?

4

1 回答 1

2

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

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

于 2013-06-28T15:57:16.147 回答