日期:2014-05-20  浏览次数:21071 次

加载C#调用DLL失败!
问题是。我在本机开发一个调用DLL程序的FORM程序。 
下面代码引用的路径都可以指向成功! 但是在将该程序给其它机器使用的时候就提示加载DLL失败! 
其它机器的该路径下也有dddd.dll这个动态链接库。 但是总是提示加载失败! 该如何解决啊??
[DllImport(@"C:\WINDOWS\system32\dddd.dll")]

这是VS2008运行的错误提示!
错误提示:无法加载 DLL“C:\windows\system32\dddd.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。

这是EXE运行的错误提示的详细信息!

************** 异常文本 **************
System.DllNotFoundException: 无法加载 DLL“C:\winnt\system32\dddd.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
  在 WindowsFormsApplication5.Form1.efport(Int32 port)
  在 WindowsFormsApplication5.Form1.ef_add() 位置 E:\WindowsFormsApplication5\WindowsFormsApplication5\Form1.cs:行号 55
  在 WindowsFormsApplication5.Form1.button1_Click(Object sender, EventArgs e) 位置 E:\WindowsFormsApplication5\WindowsFormsApplication5\Form1.cs:行号 352
  在 System.Windows.Forms.Control.OnClick(EventArgs e)
  在 System.Windows.Forms.Button.OnClick(EventArgs e)
  在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
  在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
  在 System.Windows.Forms.Control.WndProc(Message& m)
  在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
  在 System.Windows.Forms.Button.WndProc(Message& m)
  在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
  在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
  在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


------解决方案--------------------
这种方式加载的话需要编写函数的静态入口点
------解决方案--------------------
dll拷贝到路径
[DllImport
把它放到系统system32目录下试试。
------解决方案--------------------
"dddd.dll这个动态链接库"
什么类型的dll?
------解决方案--------------------
可导出的非托管DLL,是不需要装.NET Framework的.

"只有装了VS2008才好使。直接装FRAMWORK的就不行!"
这个原因可能是你未安装了对应的.NET Framework,比如VS2008 默认是 .NET framework 3.5 , 打SP1补丁后,是.NET Framework 3.5 sp1.还不包含后续可能安装的扩展dll.

------解决方案--------------------
试下在其它机器上执行
regsvr32 C:\WINDOWS\system32\dddd.dll
------解决方案--------------------
你的dll中还用了什么其它动态连接库吗?比如mfc?
------解决方案--------------------
用dumpbin /imports dddd.dll 看下它的依赖项
(要在visual studio tools程序组的command prompt中运行dumpbin)