DLL调用

WHFABC 2010-01-26 04:48:15
VC++ : ret = mdBdLedRead(path,buf);

short ret; return value OUT
long path; pointer of the opened line IN
short buf[ ]; reading data OUT


说明如上,C#改如何写呢,总是出现“尝试读取或写入受保护的记忆体”
...全文
269 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
WHFABC 2010-01-26
  • 打赏
  • 举报
回复
1.long 使用int32
2.数组不能使用ref
WHFABC 2010-01-26
  • 打赏
  • 举报
回复
因为调用mdOpen时候是OK的,调用mdBdLedRead却报错,所以变量类型不会错啊,二者仅差别在一个有数组。楼上给到例子是参数位置不对原因啊。
WHFABC 2010-01-26
  • 打赏
  • 举报
回复
再顶啊
WHFABC 2010-01-26
  • 打赏
  • 举报
回复
自己顶
goopoolzl 2010-01-26
  • 打赏
  • 举报
回复
路过~~~~~~~~~~~
WHFABC 2010-01-26
  • 打赏
  • 举报
回复
VC++ : ret = mdOpen(chan,mode,path);

short ret; return value OUT
short chan; path of channel IN
short mode; dummy(select -1) IN
long *path; opened loop path pointer OUT

[DllImport("MdFunc32.dll")]
private static extern Int16 mdOpen(Int16 Chan, Int16 Mode,ref Int16 Path);
这个OK,我怀疑是因为有数组的问题,楼上的方法试过。
qqiuzaihui 2010-01-26
  • 打赏
  • 举报
回复
        [DllImport("your.dll", EntryPoint = "mdBdLedRead")]
public static extern short mdBdLedRead(System.Int32[] path, short[] buf);

试试. 
WHFABC 2010-01-26
  • 打赏
  • 举报
回复
调用mdBdLedRead时候出现的
xujiaoxiang 2010-01-26
  • 打赏
  • 举报
回复
【尝试读取或写入受保护的记忆体】是哪里的提示?貌似调用成功了
验证码识别 2010-01-26
  • 打赏
  • 举报
回复
buf 的大小,在C++里面怎么确定?

111,121

社区成员

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

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

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