我试图拉我的.NET解决方案的Git仓库转移到同一台机器上的另一个文件夹(只是为了确保它的工作原理)。IBM .NET驱动程序找不到db2locale.dll
在我使用的项目中,创建了IfxConnection
s,当我尝试创建新的IfxConnection
时,得到了由IBM Informix驱动程序引发的DllNotFoundException
。
我收到的消息是“无法加载DLL'db2locale.dll':无法找到指定的模块(异常来自HRESULT:0x8007007E)”和堆栈跟踪(回读给构造函数调用)是:
at IBM.Data.Informix.UnsafeNativeMethods.IfxInteropAPP.sqloGetNormalizedLangFromLangId(Int16 lcid)
at IBM.Data.Informix.UnsafeNativeMethods.IfxLocale.sqloGetNormalizedLangFromLangId(Int16 lcid)
at IBM.Data.Informix.IfxResource.GetMsgPath(CultureInfo cultureInfo, String szResFileName)
at IBM.Data.Informix.IfxResource..ctor(CultureInfo cultureInfo, String szResFileName, String szMsgPath)
at IBM.Data.Informix.IfxResource..ctor(CultureInfo cultureInfo, String szResFileName)
at IBM.Data.Informix.IfxResources.GetResource(CultureInfo cultureInfo)
at IBM.Data.Informix.IfxResources.GetString(CultureInfo cultureInfo, String stringID)
at IBM.Data.Informix.Res.GetString(CultureInfo culture, String name)
at IBM.Data.Informix.ODC.InvalidArgument()
at IBM.Data.Informix.IfxConnPool.ReplaceConnectionStringParms(IfxConnection connection, String szValue, IfxConnSettings& pSettings, IfxConnSettingsInternal& pSettingsInternal, Boolean bAttach)
at IBM.Data.Informix.IfxConnection.set_ConnectionString(String value)
at IBM.Data.Informix.IfxConnection..ctor(String connectionString)
事情是,我的代码/项目不直接引用此dll。我的代码在本地计算机路径C:\Program Files\IBM\IBM DATA SERVER DRIVER\bin\netf40_32\IBM.Data.Informix.dll
上引用IBM.Data.Informix
,就像它在我所有其他项目中以及在已从中克隆此存储库的存储库中那样。从存储库中打开原始项目不会产生任何错误。
谁能给我一些见解为什么这个错误发生什么,我能做些什么来解决这个问题?
顺便说一句,在IBM Informix驱动程序似乎使用的DB2连接代码的很多在后台的范围内,在其他项目中,其中使用设计器生成的数据集,我只能连接到我Informix数据库使用DB2连接器类型。因此,DB2标签,即使它不是很明显,为什么这将是与DB2相关的。
有多奇怪。您对DRDA协议完全正确,尽管直到您指出它之前,我并没有完全理解它们之间的差异。这里问题的根源似乎是,当从存储库中提取解决方案时,Visual Studio决定选择DRDA驱动程序,而不是原始项目中使用的本地驱动程序。非常感谢你,你的回答让我完全清楚。 – Frosty840 2013-02-21 09:00:42