我正在编写.NET Framework 应用程序,并尝试连接到服务器上的DB2数据库。尝试时,出现错误“ System.DllNotFoundException:'无法加载DLL'db2app64.dll':找不到指定的模块。(HRESULT的异常:0x8007007E)'”。显然,这是因为该文件不在目录中,但是我很难找出该文件是什么以及如何获取它。这是我目前通过NuGet在项目上安装的内容:
任何事情都会有所帮助。谢谢。
答案 0 :(得分:0)
我在使用 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。