调用DLL问题
[DllImport( @"D:\\matt\\TestPrint\\TestPrint\\bin\\Debug\\BYNetPrn.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)]public static extern bool BTPNetWriteOpen(string _strIP, int connecttime, int writetime);
private void button3_Click(object sender, EventArgs e)
{
unchecked
{
bool m_bFlag = BTPNetWriteOpen("172.16.20.151", 5, 5);
MessageBox.Show(m_bFlag.ToString());
}
}
提示我
未处理的“System.DllNotFoundException”类型的异常出现在 TestPrint.exe 中。
其他信息: 无法加载 DLL“D:\\matt\\TestPrint\\TestPrint\\bin\\Debug\\BYNetPrn.dll”: 动态链接库(DLL)初始化例程失败。 (异常来自 HRESULT:0x8007045A)。
哪位高手帮助一下 --------------------编程问答-------------------- 自已顶一下 --------------------编程问答-------------------- 用@就不要用\\,反之亦然 --------------------编程问答-------------------- 试了,不行
另外DLL是VC开发 --------------------编程问答-------------------- BYNetPrn.dll当到程序运行目录下,或者system32目录中 --------------------编程问答-------------------- 两个路径都试过了,都不行 --------------------编程问答-------------------- 如果不是路径的问题的话,那就先把这个dll注册下吧~ --------------------编程问答-------------------- regsvr32 注册不了 --------------------编程问答-------------------- 找不到不是路径或文件名问题还是什么? --------------------编程问答-------------------- DLL损坏了?帮顶 --------------------编程问答-------------------- DLL没有找到
using System.Runtime.InteropServices;
把非托管的*.dll放到C:\WINDOWS\system32目录下
dll文件要注册
是否还有相关组件 --------------------编程问答-------------------- 参考 --------------------编程问答-------------------- 顶~~~~~~~~~~ --------------------编程问答-------------------- 如果你是将 DLL放在了当前项目的根目录中,就不要任何路径,在 VS 里面运行项目的时候 DLL必须要放在项目的根目录中才能找到,如果你直接运行 EXE文件的话,就将 DLL文件和 EXE文件放在同一个目录里面试试。 --------------------编程问答-------------------- @与\\矛盾了吧 --------------------编程问答-------------------- @"D:\matt\TestPrint\TestPrint\bin\Debug\BYNetPrn.dll" --------------------编程问答-------------------- 先测试一下是不是路径问题:
把DLL COPY到你的程序运行的文件夹,如DEBUG这个文件夹,
IMPORT的时候直接给个DLL的文件名,看能不能引用,如果
可以的话说明程序没问题,接下就是设置路径的问题了,
一般不使用绝对路径,最好使用相对路径
跟13楼的合起来看看 --------------------编程问答-------------------- 把DLL文件拷贝到\SYSTEM32下并添加到工程中来 --------------------编程问答-------------------- up....... --------------------编程问答-------------------- 用@就不要用\\,反之亦然
支持这条
--------------------编程问答-------------------- 放在当前程序下面,如果DLL没问题的话是可以使用的
--------------------编程问答-------------------- 学习。。。。 --------------------编程问答-------------------- 试试直接添加引用的怎么样! --------------------编程问答-------------------- 把 BTPNetWriteOpen 接口的定义帖出来看一下 --------------------编程问答-------------------- 把 BYNetPrn.dll 拷到你的bing文件夹下,与exe在一起。然后
[DllImport("BYNetPrn.dll", CharSet = CharSet.Ansi)]
public static extern bool BTPNetWriteOpen(string _strIP, int connecttime, int writetime);
补充:.NET技术 , C#