DllNotFoundException ,请大神指点!

zhuhuanlai 2017-01-22 07:56:16
大神好,我用C#调用DLL(DLL中会调用其它DLL和静态链接库),运行时出现以下错误,请帮忙指点!
我在C#的工作目录中已经添加DLL的路径。


运行后输出如下:

“ACC_Dsign_Form.vshost.exe”(CLR v4.0.30319: ACC_Dsign_Form.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“ACC_Dsign_Form.vshost.exe”(CLR v4.0.30319: ACC_Dsign_Form.vshost.exe): 已加载“C:\windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\12.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“ACC_Dsign_Form.vshost.exe”(CLR v4.0.30319: ACC_Dsign_Form.vshost.exe): 已加载“C:\windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\12.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“ACC_Dsign_Form.vshost.exe”(CLR v4.0.30319: ACC_Dsign_Form.vshost.exe): 已加载“C:\Users\ZHL\Desktop\ACC_Design\ACC_Dsign_Form\bin\Debug\ACC_Dsign_Form.vshost.exe”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“ACC_Dsign_Form.vshost.exe”(CLR v4.0.30319: ACC_Dsign_Form.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“ACC_Dsign_Form.vshost.exe”(CLR v4.0.30319: ACC_Dsign_Form.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.Linq.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“ACC_Dsign_Form.vshost.exe”(CLR v4.0.30319: ACC_Dsign_Form.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“ACC_Dsign_Form.vshost.exe”(CLR v4.0.30319: ACC_Dsign_Form.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“ACC_Dsign_Form.vshost.exe”(CLR v4.0.30319: ACC_Dsign_Form.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“ACC_Dsign_Form.vshost.exe”(CLR v4.0.30319: ACC_Dsign_Form.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Deployment\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Deployment.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“ACC_Dsign_Form.vshost.exe”(CLR v4.0.30319: ACC_Dsign_Form.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“ACC_Dsign_Form.vshost.exe”(CLR v4.0.30319: ACC_Dsign_Form.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_zh-Hans_b77a5c561934e089\mscorlib.resources.dll”。模块已生成,不包含符号。
线程 0x26a0 已退出,返回值为 259 (0x103)。
线程 0x267c 已退出,返回值为 259 (0x103)。
线程 0x24ac 已退出,返回值为 0 (0x0)。
线程 0x2d7c 已退出,返回值为 259 (0x103)。
“ACC_Dsign_Form.vshost.exe”(CLR v4.0.30319: ACC_Dsign_Form.vshost.exe): 已加载“C:\Users\ZHL\Desktop\ACC_Design\ACC_Dsign_Form\bin\Debug\ACC_Dsign_Form.exe”。已加载符号。
程序“[9776] ACC_Dsign_Form.vshost.exe: 程序跟踪”已退出,返回值为 0 (0x0)。
程序“[9776] ACC_Dsign_Form.vshost.exe”已退出,返回值为 0 (0x0)。99


...全文
1087 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuhuanlai 2017-01-23
  • 打赏
  • 举报
回复
引用 8 楼 wanghui0380 的回复:
bin里面有这个dll没有? 另外请转向定义,让我们一下这个ACC方法的定义
我试过C#的工作目录中已经添加DLL的路径,也试过把dll直接复制到与EXE同目录的文件夹内,还试过引用绝对地址,这三种方法均失效。 另外,我还做个一个简单的测试,做了一个简单的dll文件(不包含其他的dll的dll文件),运行正常,没有错误。 我找到了一篇这样的文章:http://bbs.csdn.net/topics/390519920?page=1 但是不知道如何得知我缺少哪些dll? 还请大神指点,不胜感激! 补充说明,这个dll不需要注册,是我自己做的dll。 我在控制台中能正确运行,后来我把控制台的程序改成用DLL输出给C#调用。 C#中声明如下: [DllImport("ACC_Design", CallingConvention = CallingConvention.Cdecl)] extern static int ACC(ref inx A, ref outx B); 在C#中我调用如下(只给出了关键调用语句,其他省略了) private void button1_Click_1(object sender, EventArgs e) { int c = ACC(ref X, ref Y); //调用外部函数ACC,X与A对应,虚参和实参通过顺序一一对应。 }
zhuhuanlai 2017-01-23
  • 打赏
  • 举报
回复
引用 6 楼 Chinajiyong 的回复:
你这个dll是否需要注册
这个不需要注册,是我自己做的dll。 我在控制台中能正确运行,后来我把控制台的程序改成用DLL输出给C#调用。 C#中声明如下: [DllImport("ACC_Design", CallingConvention = CallingConvention.Cdecl)] extern static int ACC(ref inx A, ref outx B); 在C#中我调用如下(只给出关键调用语句,其他省略了) private void button1_Click_1(object sender, EventArgs e) { int c = ACC(ref X, ref Y); //调用外部函数ACC,X与A对应,虚参和实参通过顺序一一对应。 }
zhuhuanlai 2017-01-23
  • 打赏
  • 举报
回复
引用 5 楼 caozhy 的回复:
关键是你这个acc对应的库的dll,没有找到,放在system32或者程序目录看看
我试过C#的工作目录中已经添加DLL的路径,也试过把dll直接复制到与EXE同目录的文件夹内,还试过引用绝对地址,这三种方法均失效。 另外,我还做个一个简单的测试,做了一个简单的dll文件(不包含其他的dll的dll文件),运行正常,没有错误。 我找到了一篇这样的文章:http://bbs.csdn.net/topics/390519920?page=1 但是不知道如何得知我缺少哪些dll? 还请大神指点,不胜感激!
threenewbee 2017-01-23
  • 打赏
  • 举报
回复
关键是你这个acc对应的库的dll,没有找到,放在system32或者程序目录看看
wanghui0380 2017-01-23
  • 打赏
  • 举报
回复
bin里面有这个dll没有? 另外请转向定义,让我们一下这个ACC方法的定义
Aaron_single 2017-01-23
  • 打赏
  • 举报
回复
dll是否已经注册过了?
EnForGrass 2017-01-23
  • 打赏
  • 举报
回复
你这个dll是否需要注册
zhuhuanlai 2017-01-23
  • 打赏
  • 举报
回复
引用 7 楼 Aaron_single 的回复:
dll是否已经注册过了?
引用 13 楼 diaodiaop 的回复:
不应该是

[DllImport("ACC_Design.DLL", CallingConvention = CallingConvention.Cdecl)]
........你是不是缺少.DLL 4个字符啊...
这个方法也试过了,问题依旧!
by_封爱 版主 2017-01-23
  • 打赏
  • 举报
回复
不应该是

[DllImport("ACC_Design.DLL", CallingConvention = CallingConvention.Cdecl)]
........你是不是缺少.DLL 4个字符啊...
xiaoyu5425 2017-01-23
  • 打赏
  • 举报
回复
depend
zhuhuanlai 2017-01-22
  • 打赏
  • 举报
回复
引用 2 楼 tianxia08 的回复:
ACC是什么东东?
是外部函数名。
zhuhuanlai 2017-01-22
  • 打赏
  • 举报
回复
引用 1 楼 stherix 的回复:
引用
我在C#的工作目录中已经添加DLL的路径。
不知道你怎么添加的 最好把dll拷到你的主程序文件夹中
我把dll拷贝到主程序文件夹中的方法也试过了,结果还是一样的。
tianxia08 2017-01-22
  • 打赏
  • 举报
回复
ACC是什么东东?
stherix 2017-01-22
  • 打赏
  • 举报
回复
引用
我在C#的工作目录中已经添加DLL的路径。
不知道你怎么添加的 最好把dll拷到你的主程序文件夹中

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧