c#调用c++动态链接库的函数,报尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

这个是DLL的说明文档中的:AutoLinkCom():串行口自动联接功能说明:此函数用来自动识别与读写器相联的串口并进行初始化操作,通过串口与读写器建立通讯链路。传输协... 这个是DLL的说明文档中的:

AutoLinkCom():串行口自动联接

功能说明:此函数用来自动识别与读写器相联的串口并进行初始化操作,通过串口

与读写器建立通讯链路。传输协议为:波特率为57600bps,数据位为8

位,1个停止位,无奇偶校验位。

在调用其它函数功能前,一定要先进行串行口的联接。

用 法:long AutoLinkCom(long * port)

参 数:port: COM1或COM2。用来返回与读写器相连的串口号。COM1、COM2 常

量在advic32.h头文件中已有定义。

返 回 值:返回值为0,表示操作正确;为其它值时表示出错。

举 例:retcode=AutoLinkCom(&port);

参 见:LinkCom()

4.5.1.2 LinkCom():串行口连接

功能说明:此函数用来初始化指定串口,并通过串口与读写器建立通讯链路。传输

协议为:57600bps,数据位为8位,1个停止位,无奇偶校验位。

用 法:long LinkCom(long port)

参 数:port:COM1或COM2。COM1、COM2 常 量 在 advic32.h 文 件 中 已 有

定义。

返 回 值:返回值为0,表示操作正确,串口连接成功。为其它值时表示出错。

举 例:retcode=LinkCom(COM1);

参 见: AutoLinkCom()

这个是我的调用 C# code:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace Dkq
{
public class ReCommand
{
public class RefComm
{
[DllImport("Advic32.dll", EntryPoint = "AutoLinkCom")]
public static extern long AutoLinkCom(long port);
}
}
}

网上查了很多资料 ,都说是类型问题。大家帮忙看看,到底是怎么回事,还有什么不清楚的可以留言给我。
展开
 我来答
SK蓮華生輝
2010-09-02 · TA获得超过199个赞
知道小有建树答主
回答量:56
采纳率:0%
帮助的人:0
展开全部
long AutoLinkCom(long * port)
port是一个指针,应该这样声明
[DllImport("Advic32.dll", EntryPoint = "AutoLinkCom")]
public static extern long AutoLinkCom(IntPtr port);
或者
[DllImport("Advic32.dll", EntryPoint = "AutoLinkCom")]
public static extern long AutoLinkCom(ref long port);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式