我正在编写 .NET Framework 应用程序并尝试连接到服务器上的 DB2 数据库。尝试时,我收到错误“System.DllNotFoundException:'无法加载 DLL 'db2app64.dll':找不到指定的模块。(HRESULT 异常:0x8007007E)'”。显然,这是因为该文件不在目录中,但我很难找出该文件是什么以及如何获取它。这是我目前通过 NuGet 在项目上安装的内容:
任何事情都会有帮助。谢谢。
最佳答案
我在使用 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 后,它立即为我工作,无需重新启动。
请注意,“较新的”NuGets,例如IBM.Data.DB2.Core.3.1.0.400 在随附的“clidriver”目录中具有必要的 MSVCR120.dll,因此无需安装 C++ Redistributable。
关于c# - 无法加载 DLL 'db2app64.dll',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57327791/