Attempt to use DLL results in error
I am using a library (DLL) that uses the Oracle.DataAccess DLL to connect to the database. I am doing in in C# .NET framework 3.5
When I attempt to compile, the compilation takes place, but the executable throws this error message.
Could not load file or assembly 'Oracle.DataAccess, Version=2.111.7.20, Culture=
neutral, PublicKeyToken=89b483f429c47342' or one of its dependencie开发者_如何学运维s. An attempt
was made to load a program with an incorrect format.
Is there some way to get around this? What could be causing this to happen?
The dll for that ODBC is likely a 32bit only dll. Are you using this on a 64bit machine? If you are, IIS 7 has an option in the application pool that will allow you to "Enable 32-Bit Applications".
One possibility: Your programm is compiled with x64 or AnyCPU on a 64bit machine but the dll has been compiled with support for x86 only.
You can overcome this if you change the plattform of your Solution (or project) to x86.
I know you can force a 64bit Assembly to run as a 32bit app with:
corflags /32bit+ Oracle.DataAccess.dll
That works because the MSIL code is not bound to a processor architecture. However I never tried it the other way:
corflags /64bit+ Oracle.DataAccess.dll
so I can't tell if this works. And I propably won't work if the dll has unmanaged dependencies.
精彩评论