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);
}
}
}
网上查了很多资料 ,都说是类型问题。大家帮忙看看,到底是怎么回事,还有什么不清楚的可以留言给我。 展开
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);
}
}
}
网上查了很多资料 ,都说是类型问题。大家帮忙看看,到底是怎么回事,还有什么不清楚的可以留言给我。 展开
1个回答
展开全部
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);
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);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询