困扰了我一个星期的大难题

.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.
(不是很确定就是这个原因)

但是不知道怎么解决。

顺便:这个问题在本地机器和测试服务器上都不会出现,在正式服务器上就出现了,怀疑是权限设置等问题,但又不确定是什么具体问题,所以请各位大哥大姐帮小弟一把。

大太阳底下跪谢了~~~


不负相思意
浏览 400回答 2
2回答

忽然笑

从你提供的信息中很难断定是什么问题.你可以试下在正式服务器上先RegSvr32 .dll再运行.

手掌心

用DependWalk 查一下dll的依赖项,是不是那台服务器少装了你们开发机的某些东西呢;可能依赖了开发环境的某个程序集;
打开App,查看更多内容
随时随地看视频慕课网APP