Exception while trying to load a Berkeley DB DLL
I have a .NET 3.5 application that has a dependency on a C++ DLL (Berkeley DB- libdb_csharp51d.dll) and I'm able to run it on my Windows 7 machine without a problem, but I've tried on two other machines (Windows Server 2008 and Windows 7) and the app keeps getting the an exception.
The exception is:
System.DllNotFoundException: Unable to load DLL 'libdb_csharp51d': The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail. (Exception from HRESULT:0x800736B1)
The message in Event Viewer:
Activation context generation failed for "C:\Path\To\libdb_csharp51d.DLL". Dependent Assembly Microsoft.VC90.DebugCRT,processorArchitecture="amd64",publicKeyToken="AWUe.k,PRvnbjRtZ",type="win32",version="9.0.21022.8" could not be found. Please use sxstrace.exe for detailed diagnosis.
(note that I've encrypted the public key token)
The folder structure is as such:
C:\Path\To\
+开发者_如何学Python myapplication.exe + some.DLL + libdb_csharp51d.DLL + someother.DLLI ran the application on my machine to make sure it works fine, then I copied the folder, as it is, directly on to the server so there is no difference between the contents of the folder between the server and my machine. I did the same thing with the other Win7 machine as well (all of the machines are 64 bit). Initially I thought that the issue would be resolved once I install Berkeley DB, but even after I installed it, I still got the same exception.
Does anybody know what may be causing this issue? Are there any fixes/workarounds?
It is looking for a msvcrtd.dll
(or one with a version number). You should have it somewhere on the development PC.
精彩评论