2013-06-28 49 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

相關問題