2010-01-14 75 views
0

我已經開發出一種雙贏移動(V5.0)應用程序,我只用1個數據庫SQLITE這些引用:MissingMethodException(不能老是發現的PInvoke DLL 'sqlceme30.dll')的Windows Mobile

  • 系統.Data.SQLite.dll(程序集版本&產品版本:1.0.65.0);
  • SQLite.Interop.065.DLL(產品版本:1.0,是第一個DLL的C++庫)。

經過5個星期的使用這個應用程序,我今天得到一個奇怪的例外,我不明白它是什麼? 例外是:

MissingMethodException 
Can`t find PInvoke DLL 'sqlceme30.dll ' 

at 

System.Data.SqlServerCe.SqlCeCommand.ReleaseNativeInterfaces() 
at 
System.Data.SqlServerCe.SqlCeCommand.Dispose(Boolean disposing) 
...... 

什麼問題? 任何人都知道這個解釋我嗎?順便說一句:直到現在我delevoped 3-4應用程序(1年前)使用這些引用和一切工作正常。

回答

1

有可能要麼「sqlceme30.dll」丟失或也許你的虛擬內存不足和DLL無法加載。先嚐試模擬器和/或關閉一些應用程序。

+0

我在我的應用程序中只使用sqlite.dll,而我沒有任何對sqlceme30.dll的引用。我不明白這一點,爲什麼我有關sqlceme30.dll異常如果我所有的引用是sqlite? sqlce.dll沒有人sql連接?只適用於sqlite。 – user250809 2010-01-14 15:32:46

+0

出的內存似乎是最常見的(而晦澀的)問題 – knittl 2010-05-12 08:20:22

0

查看您的代碼,看看是否在任何地方使用SqlCeCommand。它不應該像使用SqLite和正確的DLL那樣。

如果你不能找到在代碼SqlCeCommand任何引用,看看它可以依靠SQL CE/Mobile,您可能最近添加任何外部庫。

+0

我只用這個例子: 「公共SQLiteConnection連接」 一無所知SqlCeCommand。 我在整個解決方案中找到了「SqlCeCommand」,但沒有結果。 – user250809 2010-01-14 15:39:49

+0

你可以在你的問題中發佈完整的例外情況嗎? – 2010-01-14 15:46:46

0

有任何應用程序最近才安裝的,可能改寫此DLL與不具有方法名稱(或用不同的簽名同樣的方法)不同的(也許是較早)的版本?

運行VS命令提示符,並轉到該DLL所在的目錄,然後運行DUMPBIN /出口sqlceme30.dll。這將列出所有導出的函數名稱,並查看您嘗試調用的名稱是否在列表中。

0

這個dll是SQL CE需要的。如果您隨應用程序一起部署Sql CE dll,或者在設備上安裝SQL CE 3.0(CAB文件),則問題將消失。

但是,奇怪的是,你得到這個錯誤,你不使用Sql CE,但SQLite。你的項目中是否有對System.Data.SqlServerCe的引用?如果是這樣,你可以刪除它,看看你的應用程序是否仍然編譯和運行?

相關問題