c# 申明ref错误

来源:百度知道 编辑:UC知道 时间:2024/09/28 08:11:16
我有一个Dll, 在VB 6.0中可以如下申明和调用:
Public Declare Function GetStatus Lib "xxx.dll" (ByRef a As Integer) As Integer

在C#中进行如下申明和调用却失败:
[DllImport("xxx.dll")]
public static extern short GetStatus(ref short no);

//调用:
short no = 1
short status = GetStatus(ref no);
//报内存访问错误.

怎么做才能正确转换?

项目属性 》 右键单击属性 》 生成 》 取消 定义DEBUG常量,选择允许不安全代码、优化代码。
祝你成功。

Integer是32Bits,short是16Bits,声明时应使用ref int 如:
public static extern short GetStatus(ref int no);

不安全代码没有启用