我想一个VC6 COM DLL添加到我们的VS2010RC C#的解决方案。该DLL与VC6工具编译以产生86版本,并与VC7跨平台工具编译,以生成一个VC7 DLL。

组装x86版本工作正常,只要消耗C#项目的平台设置为86。不要紧,是x64或DLL的x86版本是否真正注册。它的工作原理与两个。如果平台被设置为“任何CPU”我收到关于BadImageFormatException的负载Interop.<name>.dll

对于x64版本,我甚至无法获得项目建设。我收到TLBIMP错误:

  

TLBIMP:错误TI0000:单个有效机器类型与兼容   输入类型库必须被指定。

有没有人见过这个问题?

编辑:

我已经做了很多挖掘到这个问题,并认为这可能是一个Visual Studio错误。我有一个干净的解决方案。我把我的COM组件,与语言无关的选择“任何CPU”。所得互操作的DLL的过程体系结构是86而不是MSIL。

可有手工制作的互操作,现在得到这个工作。

如果任何人有另一项建议,让我知道了。

有帮助吗?

解决方案

这问题可以通过打开的csproj文件并添加以下节点到任何来解决(配置)|任何CPU'节点被丢失它:

<PlatformTarget>AnyCPU</PlatformTarget>

如果该节点不存在TLBIMP将默认为x86和引起的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top