問題:
最近使用C#寫一個ADO存取ACCESS檔案。在W7以及XP執行都正常。但在Windows Embedded POSReady 2009卻一直出現以下錯誤
--------------------------------------------------------------------
System.InvalidCastException: Unable to cast COM object of type 'System.__ComObject' to interface type 'ADODB.Connection'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00001550-0000-0010-8000-00AA006D2EA4}' failed due to the following error: 不支援此種介面 (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
   at OperateCamera.Form1.button2_Click(Object sender, EventArgs e) in d:\繼光香香雞\new\拍照打卡\OperateCamera\Form1.cs:line 1834
--------------------------------------------------------------------
System.TypeLoadException: Could not load type 'ADODB.FieldsToInternalFieldsMarshaler' from assembly '繼光香香雞拍照打卡, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
   at System.StubHelpers.StubHelpers.CreateCustomMarshalerHelper(IntPtr pMD, Int32 paramToken, IntPtr hndManagedType)
   at ADODB._Recordset.get_Fields()
   at OperateCamera.Form1.button2_Click(Object sender, EventArgs e) in d:\繼光香香雞\new\拍照打卡\OperateCamera\Form1.cs:line 1844
--------------------------------------------------------------------
原因:DLL版本與新版的不一樣,用VS內建的使用的話在舊版上面無法使用。這是系統BUG,因此要使用舊版的DLL才能跑介系統和新系統。

解決方式:Windows Embedded POSReady 2009做個系統更新,再把更新後系統內的DLL複製到我的開發環境。參考那個舊系統的msdao15.dll(2.8.XXX版本的)。匯出順便一起打包。在其他Windows Embedded POSReady 2009便可直接使用。



arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()