gpt4 book ai didi

com - Visual Studio 2010 64 位 COM 互操作问题

转载 作者:行者123 更新时间:2023-12-02 23:29:54 26 4
gpt4 key购买 nike

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

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

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

TlbImp : error TI0000: A single valid machine type compatible with the input type library must be specified.

有人见过这个问题吗?

编辑:

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

现在可能需要手动创建互操作才能使其正常工作。

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

最佳答案

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

<PlatformTarget>AnyCPU</PlatformTarget>

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

关于com - Visual Studio 2010 64 位 COM 互操作问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2450509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com