开发者

Services 32bit dlls on 64bit machine

开发者 https://www.devze.com 2023-01-15 21:00 出处:网络
I\'ve built and installed my service from vs2010 onto a 64bit machine. My problem comes in when my service references 32 bit dlls (spssio32.dll to be precise) - I get the error in my event viewer : \

I've built and installed my service from vs2010 onto a 64bit machine.

My problem comes in when my service references 32 bit dlls (spssio32.dll to be precise) - I get the error in my event viewer : "System.BadImageFormatExcepti开发者_开发技巧on: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)"

Any help on the matter would be appreciated.

Regards, Byron Cobb.


Is your service code written in a .NET language? If so, you need to mark it as targeting x86 rather than Any CPU (via Project properties / Build / Platform target).

(By default, .NET code targets Any CPU, meaning that on 64-bit machines it will compile into x64 machine code. Because such 64-bit code can't load 32-bit DLLs, that can lead to failures like the one you're seeing. Where code has a dependency on a 32-bit DLL, it needs to always compile to 32-bit machine code even on 64-bit machines, hence setting the target platform to x86.)


You can use a COM surrogate

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

The other variant is to spawn an external 32 Bit server-process and add a .NET remoting interface to it and your 64 bit application, so you can use .NET remoting for interprocess communication.

0

精彩评论

暂无评论...
验证码 换一张
取 消