我試圖拉我的.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