[DllImport("PCI-Dask.dll")]
public static extern short DI_ReadPort (ushort CardNumber, ushort Port, out uint Value);我在C#代码里面调用改方法,
int Result,gIOCard;
long gSigInput;
Result = DASK.DI_ReadPort((ushort)gIOCard, (ushort)0,out (uint) gSigInput);
一直出现编译错误是:ref或out参数必须是可以赋值的变量!  
跪求大家帮助啊。紧急啊

解决方案 »

  1.   

    Result = DASK.DI_ReadPort(gIOCard, 0, gSigInput);
      

  2.   

    ushort Result,gIOCard;
    uint gSigInput;
    Result = DASK.DI_ReadPort((ushort)gIOCard, 0,out gSigInput);试一试
      

  3.   

    C#也有out关键字,out参数不需要初始化,交由dll去初始化
      

  4.   

    // 方法定义
    [DllImport("PCI-Dask.dll")]
    public static extern short DI_ReadPort(ushort CardNumber, ushort Port, ref uint Value);// 调用
    ushort gIOCard = 0;
    uint gSigInput = 0;
    short Result = DI_ReadPort(gIOCard, 0, ref gSigInput);
      

  5.   

    谢谢大家的回复,只有findcaiyzh的可以,其他人的还是报错。
    我只改拉uint gSigInput;
    其他变量参数没改。把原来Result = DASK.DI_ReadPort((ushort)gIOCard, (ushort)0,out (uint) gSigInput);
    改成Result = DASK.DI_ReadPort((ushort )gIOCard, (ushort )0, out gSigInput);就可以啦。这个是为什么呢?昨天一直调拉5个小时。  我变量gSigInput之前是long在out后面加个显示转换成(uint)为什么一直不行呢?求解释。谢谢
      

  6.   

    short Result = DI_ReadPort(gIOCard, 0, ref gSigInput);
    这样编译时报错还是运行时报错?
      

  7.   

    long av
    (uint)av 
    不等于
    uint av
    av