【问题标题】:Launching a 32bit exe via OLE dispatch from a 64 bit exe从 64 位 exe 通过 OLE 调度启动 32 位 exe
【发布时间】:2013-06-26 11:17:57
【问题描述】:

我有一个编译到 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 应用程序再次崩溃。如何正确设置?

【问题讨论】:

    标签: wpf dll com mfc ole


    【解决方案1】:

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

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

    【讨论】:

    • 我的 WPF 应用程序平台和目标平台需要是 ANYCPU。这是必须的。所以这意味着我也需要编译 COM ANYCPU 吗?我不能使用 Process.Start,因为我肯定需要在应用程序之间进行大量交互。
    猜你喜欢
    • 2016-01-29
    • 2023-03-22
    • 2013-06-02
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 2019-04-16
    相关资源
    最近更新 更多