Visual Studio 2010中的64位COM互操作问题
-
20-09-2019 - |
题
我想一个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和引起的问题。
不隶属于 StackOverflow