2013-06-28 43 views
1

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

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

如果我编译COM Wrapper win32和WPF平台目标ANYCPU,我的WPF应用程序再次崩溃。 如何正确设置? 帮助将不胜感激, 谢谢

回答

2

您只能使用COM目标相同的平台位大小是您当前的可执行文件。如果您以32位进程运行,则您必须使用32位COM包装程序。如果您以64位进程运行,则您的必须使用64位COM包装程序。这通常意味着您需要两个独立的应用程序版本,因此您可以定位适当的包装器。这就是说,如果你唯一的目标是启动应用程序(而不是与它交互),你可以使用Process.Start而不是COM包装来启动它。

+0

我的WPF应用程序平台和目标平台需要是ANYCPU。这是必须的。所以这意味着我需要编译COM ANYCPU呢? 我无法使用Process.Start,因为我绝对需要在应用程序之间进行大量的交互。 – WAQ

相关问题