无法加载DLL文件'db2app64.dll'。

4
我正在编写一个.NET Framework应用程序,并尝试连接到服务器上的DB2数据库。在尝试时,我遇到了错误:“System.DllNotFoundException:'无法加载DLL'db2app64.dll':找不到指定的模块。(HRESULT异常:0x8007007E)'”。显然,这是因为该文件不在目录中,但我很难找出那个文件以及如何获取它。以下是我当前通过NuGet安装在项目上的内容:EntityFramework, EntityFramework.IBM.DB2, IBM.Data.DB2, Newtonsoft.Json, System.IO 任何帮助都将是有益的。谢谢。

2
你是否已经安装了IBM DB2客户端软件?https://www-01.ibm.com/support/docview.wss?uid=swg27016878 - Paul Vernon
1
https://www.ibm.com/developerworks/community/blogs/96960515-2ea1-4391-8170-b0515d08e4da/entry/Instructions_for_downloading_and_using_DB2_NET_Core_provider_package?lang=en - mao
1个回答

2
我遇到了与NuGet相关的问题:IBM.Data.DB.Provider版本为"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(但您可能需要例如ARM版本适用于您的PC)。
在我安装C++ Redistributable 2013之后,它立即为我工作,无需重新启动。
请注意,“新的” NuGets,例如 IBM.Data.DB2.Core.3.1.0.400,已经在其附带的“clidriver”目录中包含了必要的 MSVCR120.dll,因此不需要安装 C++ Redistributable。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接