【问题标题】:Visual Studio 2010 64-bit COM Interop IssueVisual Studio 2010 64 位 COM 互操作问题
【发布时间】:2011-01-27 21:00:04
【问题描述】:

我正在尝试将 VC6 COM DLL 添加到我们的 VS2010RC C# 解决方案中。 DLL使用VC6工具编译生成x86版本,使用VC7跨平台工具编译生成VC7 DLL。

只要将使用 C# 项目的平台设置为 x86,x86 版本的程序集就可以正常工作。 DLL 的 x64 或 x86 版本是否实际注册并不重要。它适用于两者。如果平台设置为“任何 CPU”,我会在 Interop.<name>.dll 的负载上收到 BadImageFormatException

至于 x64 版本,我什至无法构建项目。我收到 tlbimp 错误:

TlbImp:错误 TI0000:与 必须指定输入类型库。

有人看过这个问题吗?

编辑:

我对这个问题做了更多的研究,并认为这可能是一个 Visual Studio 错误。我有一个干净的解决方案。我选择了与语言无关的“任何 CPU”来引入我的 COM 程序集。生成的 Interop DLL 的进程体系结构是 x86 而不是 MSIL。

现在可能必须手动制作 Interop 才能使其正常工作。

如果有人有其他建议,请告诉我。

【问题讨论】:

    标签: com visual-studio-2010 interop visual-c++-6


    【解决方案1】:

    可以通过打开 CSProj 文件并将以下节点添加到任何缺少它的“(配置)|任何 CPU”节点来解决此问题:

    <PlatformTarget>AnyCPU</PlatformTarget>
    

    如果此节点不存在,TlbImp 将默认为 x86 并导致问题。

    【讨论】:

    • 我希望我能再投票几次。回想起来,这个错误的含义很明显,但乍一看令人困惑。
    • 它有效,但我需要在 CSProj 文件中添加单独的 项目才能启动 VS实际使用此设置。
    猜你喜欢
    • 2011-02-14
    • 2012-02-27
    • 2018-05-10
    • 2011-08-20
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2022-01-13
    相关资源
    最近更新 更多