日期:2014-05-18  浏览次数:22188 次

c# winform 无法加载 DLL,找不到指定的模块。
错误信息是:
无法加载 DLL“dhnetsdk.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。

************** 异常文本 **************
System.DllNotFoundException: 无法加载 DLL“dhnetsdk.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
  在 DHNetSDK.DHClient.CLIENT_PTZControl(Int32 lLoginID, Int32 nChannelID, UInt16 dwPTZCommand, UInt16 dwStep, Boolean 

dwStop)
  在 DHNetSDK.DHClient.DHPTZControl(Int32 lLoginID, Int32 nChannelID, PTZ_CONTROL dwPTZCommand, UInt16 dwStep, Boolean 

dwStop)
  在 nwvideo.frm_MainC.button8_MouseDown(Object sender, MouseEventArgs e) 位置 E:\csharpworks\nwvideo\nwvideo\frm_MainC.cs:

行号 1790

--------------------------------------------------
我在程序里引入了
using DHNetSDK;

也在引用里加了
DHNetSDK

出错的行上是这句
DHClient.DHPTZControl(pLoginID, channelId, PTZ_CONTROL.PTZ_UP_CONTROL, stepValue, false);

下边这句执行是没问题的
DHClient.DHSetEncoding(LANGUAGE_ENCODING.gb2312);

我觉得是不是DHClient.DHPTZControl没有正常的调用dhnetsdk.dll
这个dhnetsdk.dll好象是C++开发的,导入不到引用里

请问这个问题该怎么解决


---------------------------------------------------
我把dhnetsdk.dll和DHNetSDKCS.dll都拷贝到系统的System32下了,也拷贝到项目的bin下了,也拷贝到项目的根目录下了C:\WINDOWS\system32
E:\csharpworks\nwvideo\nwvideo
E:\csharpworks\nwvideo\nwvideo\bin\Debug
可是一直还都是报这个错


请问怎么办

------解决方案--------------------
你全部重新生成下试试
把你dll代码和相关代码发出来
------解决方案--------------------
是不是要注册的啊? tlbimp 命令之类的!
------解决方案--------------------
这个DHNetSDK肯定不是100%的.NET代码,所以deploy的时候肯定不是一个DHNetSDK.dll就能够搞定。你最好看看这个库详细的deploy指南,或许可以知道还有哪些东西需要发布和注册。因为这类东西都是和类库实现紧密相关的东西,因此不能简单的给一个通用答案。
------解决方案--------------------
这个dll是不是非托管语言写的啊
------解决方案--------------------
那样的话需要dllimport
在google中搜索dllimport很多答案的
------解决方案--------------------
好多高手啊,学习,祝楼主早点解决,别忘把解决办法说下哈
------解决方案--------------------
dhnetsdk.dll是托管代码的程序集?还是标准的DLL?这个要搞清楚。标准的DLL是无法通过引用来添加到工程里的。
必须通过这种方式:如C#调用User32.dll里的FindWindow方法:
C# code
[DllImport("User32.dll",EntryPoint="FindWindow")] 
private static extern IntPtr FindWindow(string lpClassName,string lpWindowName);

------解决方案--------------------
这是一个C++ 的dll ,不能用调用C# 的方法那样调用
看看这个网址,我觉得应该对你有所帮助
http://topic.csdn.net/u/20070320/10/b03efaaa-c6fd-4419-a114-53e7f71907b2.html
------解决方案--------------------
如果没法在引用里面导入,那就是标准c++开发的dll,你没法这么简单的用的,要用dllimport

------解决方案--------------------
把dhnetsdk.dll放到c:\windows\system32里面;或者在解决方案资源管理器里,右击此DLL,属性里把其做为嵌入资源;
------解决方案--------------------
有可能 dhnetsdk.dll 需要某个dll,
而那个dll不在标准路径下

------解决方案--------------------
,右击此DLL,属性里把其做为嵌入资源;
------解决方案--------------------
探讨

C# code[DllImport("User32.dll",EntryPoint="FindWindow")]
private static extern IntPtr FindWindow(string lpClassName,string lpWindowName);

------解决方案--------------------