C# LoadLibrary 998错误

C# LoadLibrary 998错误,c#,winapi,error-handling,loadlibrary,C#,Winapi,Error Handling,Loadlibrary,我有一个.NETC控制台应用程序,它在运行时加载几个Win32 DLL-s。当此应用程序在我的开发人员计算机上运行时,笔记本电脑上为32位Win7,桌面电脑上为64位Win7,有时会导致998错误。重新启动开发人员计算机后,此问题消失。这发生在linux Win server 2008 R2上的测试服务器虚拟机上,但在重新启动后也会消失。因此不容易复制 很难理解原因,当我使用DLL-s加载dependecy walker时,它显示出它们绝对没有问题,这两个Dependence是Kernel32.

我有一个.NETC控制台应用程序,它在运行时加载几个Win32 DLL-s。当此应用程序在我的开发人员计算机上运行时,笔记本电脑上为32位Win7,桌面电脑上为64位Win7,有时会导致998错误。重新启动开发人员计算机后,此问题消失。这发生在linux Win server 2008 R2上的测试服务器虚拟机上,但在重新启动后也会消失。因此不容易复制

很难理解原因,当我使用DLL-s加载dependecy walker时,它显示出它们绝对没有问题,这两个Dependence是Kernel32.DLL和MSVCRT.DLL。今天,从命令行启动我的应用程序时发生了此错误。我将应用程序加载到VS2010中,然后启动,相同的dll-s加载时没有任何问题。停止它,我再次从命令行启动我的应用程序,它也加载了DLL-s


这些DLL-s不是由我开发的,而是由第三家公司开发的,所以我看不到DLL-s的源代码。知道发生了什么吗

在应用程序所在的文件夹中设置dll。 您的应用程序必须以管理员访问权限运行。 只需以管理员身份运行VS 或者以管理员身份运行cmd,然后将cmd路径更改为应用程序位置,如本例所示

c:\cd /d your_application_path

然后在命令提示符中写入应用程序的名称。然后,您的应用程序可以拥有管理令牌以成功执行工作

在应用程序所在的文件夹中设置dll。 您的应用程序必须以管理员访问权限运行。 只需以管理员身份运行VS 或者以管理员身份运行cmd,然后将cmd路径更改为应用程序位置,如本例所示

c:\cd /d your_application_path

然后在命令提示符中写入应用程序的名称。然后,您的应用程序可以拥有管理令牌以成功执行工作

检查此项,可能会有所帮助-winerror.h中将错误998 0x3e6定义为错误\u NOACCESS,对内存位置的访问无效。对的快速搜索表明,这是由LoadLibrary尝试加载DLL时的访问冲突引起的。这里有几篇KB文章可能会有所帮助。你能想象对内存的无效访问有时会发生,有时不会吗?@ZoltanHernyak:我可以很容易地想象出来。由于种种原因,这种情况经常发生。我并不是说没有帮助,但我们只是没有足够的信息来猜测原因\我问过第三方开发者,他们说DllMain包含一个没有主体的开关,并且返回true;标准DllMain模板。检查此项,可能会有所帮助-winerror.h中将错误998 0x3e6定义为错误\u NOACCESS,对内存位置的访问无效。对的快速搜索表明,这是由LoadLibrary尝试加载DLL时的访问冲突引起的。这里有几篇KB文章可能会有所帮助。你能想象对内存的无效访问有时会发生,有时不会吗?@ZoltanHernyak:我可以很容易地想象出来。由于种种原因,这种情况经常发生。我并不是说没有帮助,但我们只是没有足够的信息来猜测原因\我问过第三方开发者,他们说DllMain包含一个没有主体的开关,并且返回true;标准DllMain模板。