【问题标题】:x86 COM+ server access from x64 code从 x64 代码访问 x86 COM+ 服务器
【发布时间】:2012-07-10 21:43:58
【问题描述】:

我需要从 x64 代码访问 x86 dll(第 3 方,无法访问源代码)。我的研究表明,将 dll 放在 COM+ 包装器中并作为 OOP 服务访问是最合适的方法。

到目前为止一切顺利。

因此,请遵循“NET 2.0 互操作性食谱​​ - 问题解决方法”中的指南(尽管我正在运行 VS2010 和 .NET4)。我构建了一个概念验证服务(dll)并测试客户端(exe),该服务作为服务器应用程序运行为 OOP。它们都可以工作,通过组件服务禁用服务会杀死它,所以它似乎使用了正确的路由。

这一切都在 x86 中。

当我将客户端更改为 x64 时,我得到一个“BadImageFormatException”,如果它只是加载一个 x86 dll,我预计会出现这种情况,但这应该是运行 OOP。

我知道我遗漏了一些东西,这可能很明显。

其他说明:

1) 我运行 regsvcs post build 和 regsvcs /u prebuild 2) 问题dll原样卡住,我的主要代码库必须是x64

【问题讨论】:

    标签: c# visual-studio-2010 .net-4.0 com+


    【解决方案1】:

    您需要强制您的程序在所有平台上以 x86 模式运行。进入主程序集的属性并在“构建”选项卡中,将“平台目标”从“任何 CPU”更改为“x86”。这将强制所有程序集以 x86 模式运行,即使在 x64 机器上也是如此。

    【讨论】:

    • 都不是Any CPU,服务器是x86,客户端是x64。我不希望客户端在 x86 中运行,这会破坏使用 COM+ 的全部目的,因为我只能在代码中使用 dll。
    猜你喜欢
    • 2010-09-26
    • 2011-06-09
    • 2023-03-29
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    相关资源
    最近更新 更多