.net在调用非扩管的dll的时候出现了错误,不知道怎么解决.
问题出现在:LoadLibrary方法调用后,Marshal.GetLastWin32Error()的错误代码为5
代码:
System.IntPtr moduleHandle = LoadLibrary(dllFilePath);
if (moduleHandle == IntPtr.Zero)
{
int errorCode = Marshal.GetLastWin32Error();
throw new Exception(string.Format("加载Dll时发生错误: {0}, error - {1}" , dllFilePath , errorCode));
}
return moduleHandle;
网上查了代码为5的原因好像是:Attempt was made to dynamically link to a task, or there was a
sharing or network-protection error.
(不是很确定就是这个原因)
但是不知道怎么解决。
顺便:这个问题在本地机器和测试服务器上都不会出现,在正式服务器上就出现了,怀疑是权限设置等问题,但又不确定是什么具体问题,所以请各位大哥大姐帮小弟一把。
大太阳底下跪谢了~~~
从你提供的信息中很难断定是什么问题.
你可以试下在正式服务器上先RegSvr32 .dll再运行.
用DependWalk 查一下dll的依赖项,是不是那台服务器少装了你们开发机的某些东西呢;
可能依赖了开发环境的某个程序集;
错误5 是 Access Denied,就是访问拒绝。你的非托管DLL肯定是访问了什么文件,信号量,互斥量之类的windows 内核资源,又没有取得相应的权限。
7z.dll这个我是加载他,老提示如上错误,问题在哪呢
这个问题,最后找到解决方法了么?我也遇到了。