最近开发一个项目,里面用到了非.net开发的一个dll文件接口,发现发布到window2003服务器上后,运行网站总是提示 “无法加载 DLL“D:\11\1.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。 ”这个错误。但是我在本地xp系统上调试是可以的。
dll使用com调用如下
[DllImport(@"D:\11\1.dll", EntryPoint = "aaa", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] public static extern Boolean aaa(bool x);
提问地址:http://topic.csdn.net/u/20121031/17/2085fdf4-cf81-4cf9-8650-e02c1ed8d67d.html
解决方法:
步骤一:dll调用使用绝对路径,如DllImport(@"D:\11\1.dll"或者将调用dll文件放到system32目录下。
可参考http://blog.csdn.net/xsgreen/article/details/3647501
步骤二:使用depends.exe工具查看要调用的dll文件引用了哪些组件(其它dll文件),搜索服务器system32目录,对比dll引用的组件是否存在服务器system32目录中,如果不存在,将缺少的dll文件复制到要调用的dll文件相同目录中。经过对比,发现服务器system32目录下缺少了borlndmm.dll这个dll文件,复制borlndmm.dll到服务器D盘11文件夹下,问题解决。
步骤三:如果上面还没解决,应该就是权限问题,选中要调用dll文件存放文件夹,鼠标右键-》安全-》添加aspnet帐号(ASP.NET Machine Account),勾选完全控制即可。
如果以上三步还不行,就不知道了。 |