2012-07-12 115 views
1

我有一個.NET C#控制檯應用程序,它在運行時加載多個Win32 DLL-s。當這個應用程序運行在我的開發人員機器上時(我的筆記本電腦上是32位Win7,我的桌面電腦上是64位Win7),有時會導致998錯誤。重新啓動開發人員機器後,此問題消失。這發生在測試服務器上(linux上的虛擬機,Win Server 2008 R2),但重啓後它也會消失。由於這個原因不容易重現。LoadLibrary 998錯誤

難以理解的原因,當我加載DLL依賴walker,它顯示絕對沒有問題,他們兩個依賴是Kernel32.DLL和MSVCRT.DLL。今天,這個錯誤發生在命令行啓動我的應用程序。我將應用程序加載到VS2010中,然後啓動,並且相同的dll-s加載沒有任何問題。停止它我再次從命令行啓動我的應用程序,並且它也加載了DLL-s。

這些DLL-s不是由我開發的,而是由第三方開發的公司,所以我看不到DLL-s的源代碼。任何想法發生什麼?

+0

檢查了這一點,可能會有所幫助 - http://support.microsoft.com/kb/196069 – 2012-07-12 16:04:12

+0

錯誤998('0x3e6')在'winerror.h'中定義爲'ERROR_NOACCESS','無效訪問內存位置'。快速搜索[MSDN](http://social.msdn.microsoft.com/Search/en-US?query=ERROR_NOACCESS&ac=8)表示這是由於LoadLibrary嘗試加載DLL時訪問衝突造成的。那裏有一些知識庫文章可能有所幫助。 – 2012-07-12 16:10:33

+0

你能想象有時會發生「無法訪問內存」嗎? – 2012-07-12 17:56:40

回答

0

設置你的DLL在同一個文件夾中你的應用程序。 您的應用程序必須以管理員訪問權限運行。 只要運行VS作爲管理員 或運行CMD作爲管理員然後更改CMD路徑您的應用程序的位置,因爲這例子

c:\cd /d your_application_path 

然後在命令提示編寫你的應用程序的名稱。那麼你的應用程序可以擁有管理令牌來成功執行工作。

相關問題