C# 尝试加载Berkeley DB DLL时发生异常

C# 尝试加载Berkeley DB DLL时发生异常,c#,exception,dll,unmanaged,berkeley-db,C#,Exception,Dll,Unmanaged,Berkeley Db,我有一个.NET 3.5应用程序,它依赖于C++ dll(伯克利dB -LiBdB.cSARPp5d.dll),我可以在我的Windows 7机器上运行它而没有问题,但是我已经尝试过另外两台机器(Windows Server 2008和Windows 7),并且应用程序不断得到一个异常。 例外情况是: System.DllNotFoundException:无法加载DLL“libdb_csharp51d”:应用程序无法启动,因为其并排配置不正确。有关详细信息,请参阅应用程序事件日志或使用命令行s

我有一个.NET 3.5应用程序,它依赖于C++ dll(伯克利dB -LiBdB.cSARPp5d.dll),我可以在我的Windows 7机器上运行它而没有问题,但是我已经尝试过另外两台机器(Windows Server 2008和Windows 7),并且应用程序不断得到一个异常。 例外情况是:

System.DllNotFoundException:无法加载DLL“libdb_csharp51d”:应用程序无法启动,因为其并排配置不正确。有关详细信息,请参阅应用程序事件日志或使用命令行sxstrace.exe工具。(HRESULT的异常:0x800736B1)

事件查看器中的消息:

“C:\Path\To\libdb\u csharp51d.DLL”的激活上下文生成失败。找不到相关程序集Microsoft.VC90.DebugCRT、processorArchitecture=“amd64”、publicKeyToken=“AWUe.k、PRvnbjRtZ”、type=“win32”、version=“9.0.21022.8”。请使用sxstrace.exe进行详细诊断

(注意,我已经加密了公钥令牌)

文件夹结构如下所示:

C:\Path\To\
+myapplication.exe
+一些.DLL
+libdb_csharp51d.DLL
+someother.DLL

我在我的机器上运行应用程序以确保其正常工作,然后将文件夹原样直接复制到服务器上,以便服务器和我的机器之间的文件夹内容没有差异。我对另一台Win7机器也做了同样的事情(所有机器都是64位的)。起初我认为,一旦我安装了Berkeley DB,这个问题就会得到解决,但即使在我安装了它之后,我仍然得到了同样的异常


有人知道是什么导致了这个问题吗?是否有任何修复/解决方法?

它正在寻找
msvctd.dll
(或具有版本号的)。你应该在开发PC的某个地方拥有它。< /P>我安装了X64的微软VisualStudio C++可再分发包2008,文件版本为90.21022.8;此外,文件版本与事件错误消息指示的版本相匹配。仍然得到相同的异常tho。我假设需要DebugCRT,因为DLL是为调试模式构建的。如果我使用DLL的发布版本,我能假设它不需要DebugCRT吗?@Lirik,您需要使用DLL的发布版本,可再发行版本只安装发布DLL的。您需要做的就是在发布模式下构建libdb_csharp51d.DLL并部署它。CRT的调试版本不是一个可分发的组件——根据微软的说法,你不允许自己分发。他们认为这是VisualStudio的一部分,这是获得Dll的唯一合法途径。