【问题标题】:Unable to load DLL 'db2app64.dll'无法加载 DLL 'db2app64.dll'
【发布时间】:2019-08-02 13:48:12
【问题描述】:
我正在编写一个 .NET Framework 应用程序并尝试连接到服务器上的 DB2 数据库。尝试时,我收到错误“System.DllNotFoundException:'无法加载 DLL'db2app64.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)'”。显然,这是因为该文件不在目录中,但我很难找出该文件是什么以及如何获取它。这是我目前通过 NuGet 在项目上安装的内容:
任何事情都会有所帮助。谢谢。
【问题讨论】:
标签:
c#
.net
entity-framework
db2
【解决方案1】:
我在使用 NuGet 时遇到了同样的问题:IBM.Data.DB.Provider version="11.5.4000.4861" targetFramework="net452",其中包含一个“clidriver”目录,其中包含所有必要的 DLL,包括 64 位'db2app64.dll'、32 位 'db2app.dll' 和其他使 DB2 数据访问成为可能的东西。
感谢Dependency Walker,我发现我的 Windows 上缺少 MSVCR120.dll。
我下载了Visual C++ Redistributable Packages for Visual Studio 2013 x86 和 x64 位版本(我在 64 位 Win10 和 64 位 Windows Server 2016 Standard 上运行)并按此顺序安装它,首先是 x86,然后是 x64(但您可能需要例如适用于您 PC 的 ARM 版本)。
在我安装 C++ Redistributable 2013 后,它立即为我工作,无需重新启动。
请注意,“较新”的 NuGet,例如IBM.Data.DB2.Core.3.1.0.400 在随附的“clidriver”目录中具有必要的 MSVCR120.dll,因此无需安装 C++ Redistributable。