2012-07-12 117 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 

然后在命令提示编写你的应用程序的名称。那么你的应用程序可以拥有管理令牌来成功执行工作。

相关问题