调用dll文件问题 ~~~~~~~在线等

zzxxdd 2010-01-19 02:15:35
在做的系统中,需要添加一个外设,在外设给的开发dll文件中,有下面这样的一个函数,请问如何调用


dll文件名为:test.dll

其中的文件名称为:HANDLE test_Init(UC aaa,UL bbb),其中

UC = unsigned char,UL = unsigned long;

请问,我该怎么调用这个返回为句柄的函数,

再线等,问题解决,马上给分
...全文
168 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzxxdd 2010-01-19
  • 打赏
  • 举报
回复
在查资料后发现原因是因为类型大小不匹配

如果把private static extern long test_Init(ulong aaa, ulong bbb);


改为private static extern long test_Init(byte aaa, Uint32 bbb);

问题就解决了
zzxxdd 2010-01-19
  • 打赏
  • 举报
回复
自己在顶下,别让沉下去
lijun_xiao2009 2010-01-19
  • 打赏
  • 举报
回复
zzxxdd 2010-01-19
  • 打赏
  • 举报
回复
总会提示这样的错误:

原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配
zzxxdd 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xray2005 的回复:]
public class TestClass
{
[DllImport("test.dll")]
        private static extern long test_Init(ulong aaa, ulong bbb);
        public static long  test_Init(ulong aaa, ulong bbb)
        {
            //你的代码
        }
}

外部调用:
TestClass.Init(AAA,BBB);
[/Quote]

在上面的代码中怎么实现和dll文件中的函数接口呢?
zzxxdd 2010-01-19
  • 打赏
  • 举报
回复
测试中.....
messi_yang 2010-01-19
  • 打赏
  • 举报
回复
2樓可行··
zzxxdd 2010-01-19
  • 打赏
  • 举报
回复
UC 也是数字???
wiki14 2010-01-19
  • 打赏
  • 举报
回复
返回类型?你没有return的么?

外部调用时用相对应的变量接受就可以了
xray2005 2010-01-19
  • 打赏
  • 举报
回复
HANDLE 其实就是串数字而已
zzxxdd 2010-01-19
  • 打赏
  • 举报
回复
返回类型不用管可以吗?
xray2005 2010-01-19
  • 打赏
  • 举报
回复
外部调用:
TestClass.Init(AAA,BBB);

==>

外部调用:
TestClass.test_Init(AAA,BBB);
xray2005 2010-01-19
  • 打赏
  • 举报
回复
public class TestClass
{
[DllImport("test.dll")]
private static extern long test_Init(ulong aaa, ulong bbb);
public static long test_Init(ulong aaa, ulong bbb)
{
//你的代码
}
}

外部调用:
TestClass.Init(AAA,BBB);
zzxxdd 2010-01-19
  • 打赏
  • 举报
回复
没人瞅一眼....

110,534

社区成员

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

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

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