I'm seeing the following exception in my managed (C#) app calling an unmanaged assembly:
Caught:System.IO.FileLoadException 'A dynamic link library (DLL) initialization routine failed. (Exception from HRESULT: 0x8007045A)'
What does this HRESULT mean, and where should I start in diagnosing this?
alternatively the DLL you try to load is trying to load a missing DLL, check with DEPENDS.EXE on the DLL.
FileLoadException Class
Represents the error that occurs when a Assembly file is found but cannot be loaded.
The FileNotFoundException exception is thrown when the file fails to load because it cannot be located. If the file is located, but cannot be loaded due to insufficient permissions, a SecurityException is thrown.
FileLoadException has the default HRESULT of COR_E_FILELOAD, which has the value 0x80131621, but this is not the only possible HRESULT.
If your code does not have PathDiscovery permission, the error message for this exception may only contain file or directory names instead of fully qualified paths.
Quoted straight from MSDN:
link text
This is usually simply an issue of being able to find the required library.
I was getting this error after upgrading a solution that was in VS 2008 and had projects targeting .NET framework v2.0 to VS 2010 with target runtime v 4.0. The exception I was getting was:
Could not load file or assembly 'XYZ.dll' or one of its dependencies. A dynamic link library (DLL) initialization routine failed. (Exception from HRESULT: 0x8007045A)":"XYZ.dll
This was fixed by adding the following section to the App.config file of the project set as startup:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0"/>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
来源:https://stackoverflow.com/questions/1747985/what-does-error-dll-init-failed-mean