C# 调用dll 异常 有些函数不能调用
[DllImport(@"C:\ProgramFiles(x86)\ABC\device.dll")]privatestaticexternuintopenDevice(...
[DllImport(@"C:\Program Files (x86)\ABC\device.dll")]
private static extern uint openDevice(int Con_type, string Com_port, uint data_rate, int retrytimeout, int usbtimeout);
private static extern uint closeDevice(uint Handle);
上面是我调用一个指定地址的dll,是一个应用程序提供的,不知道是托管还是非托管的(怎么判断?)
声明第一个函数OpenDevice的那个语句没有问题,唯独closeDevice 这个有问题,异常信息如下?
An unhandled exception of type 'System.TypeLoadException' occurred in mscorlib.dll
Additional information: Could not load type 'ABC_Console.Form1' from assembly 'ABC Console, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because the method 'closeDevice' has no implementation (no RVA).
可以知道device.dll中绝对包含有closeDevice 这个函数,为什么有些函数调用就没有问题,有些就有? 展开
private static extern uint openDevice(int Con_type, string Com_port, uint data_rate, int retrytimeout, int usbtimeout);
private static extern uint closeDevice(uint Handle);
上面是我调用一个指定地址的dll,是一个应用程序提供的,不知道是托管还是非托管的(怎么判断?)
声明第一个函数OpenDevice的那个语句没有问题,唯独closeDevice 这个有问题,异常信息如下?
An unhandled exception of type 'System.TypeLoadException' occurred in mscorlib.dll
Additional information: Could not load type 'ABC_Console.Form1' from assembly 'ABC Console, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because the method 'closeDevice' has no implementation (no RVA).
可以知道device.dll中绝对包含有closeDevice 这个函数,为什么有些函数调用就没有问题,有些就有? 展开
1个回答
展开全部
[DllImport(@"C:\Program Files (x86)\ABC\device.dll")]
private static extern uint openDevice(int Con_type, string Com_port, uint data_rate, int retrytimeout, int usbtimeout);
[DllImport(@"C:\Program Files (x86)\ABC\device.dll")]
private static extern uint closeDevice(uint Handle);
好像应该是这样……
private static extern uint openDevice(int Con_type, string Com_port, uint data_rate, int retrytimeout, int usbtimeout);
[DllImport(@"C:\Program Files (x86)\ABC\device.dll")]
private static extern uint closeDevice(uint Handle);
好像应该是这样……
追问
就是这样的,问题解决了。
能否解释一下这个原因。如果有100个函数,要写100次DllImport?
追答
这个我没有试过,我之前用的时候都是每个函数跟着一个dllimport,按说应该有简写方法,有时间找一下,找到了再给你回答。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询