在64位机器上提供32位dll服务

时间:2010-09-08 11:08:12

标签: dll service 64-bit 32-bit

我已经将我的服务从vs2010构建并安装到64位机器上。

当我的服务引用32位dll(准确地说是spssio32.dll)时出现问题 - 我在事件查看器中收到错误:“System.BadImageFormatException:尝试加载带有格式不正确。(HRESULT异常:0x8007000B)“

对此事的任何帮助都将不胜感激。

此致 Byron Cobb。

2 个答案:

答案 0 :(得分:3)

您的服务代码是用.NET语言编写的吗?如果是,则需要将其标记为定位x86而不是Any CPU(通过项目属性/构建/平台目标)。

(默认情况下,.NET代码的目标是Any CPU,这意味着在64位计算机上它会编译成x64机器代码。因为这样的64位代码无法加载32位DLL,这可能导致对于你所看到的故障。如果代码依赖于32位DLL,它甚至需要在64位机器上编译为32位机器代码,因此将目标平台设置为{{1} }。)

答案 1 :(得分:1)

您可以使用COM代理

http://www.dnjonline.com/article.aspx?id=jun07_access3264

另一种变体是产生一个外部32位服务器进程,并为它和64位应用程序添加一个.NET远程处理接口,因此您可以使用.NET远程处理进行进程间通信。