我需要从x64代码访问x86 dll(第三方,无法访问源代码)。我的研究表明将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
答案 0 :(得分:0)
您需要强制程序在所有平台上以x86模式运行。进入主程序集的属性,在“构建”选项卡中,将“平台目标”从“任何CPU”更改为“x86”。这将强制所有组件在x86模式下运行,即使在x64机器上也是如此。