DLL原型
short GetNumber( byte Msg[31] );
说明:
cardNo[31]: 0-11是卡号,12-13是时间,14-30操作员
关键是C#调用时参数如何传递。

解决方案 »

  1.   

    在C#中申明前指明调用DLL的位置及对应的函数名,然后参数用StringBuild类型
    其它代码就能直接当自己的函灵敏调用了
      

  2.   

    在程序中引入DLL和命名空间后,和本工程的函数并不太多区别(我指用法上)
      

  3.   

    好象直接传入一个struct就可以了吧
      

  4.   

    have a try!
    [DllImport(...)]
    extern static Int16 GetNumber( byte[] Msg );
      

  5.   

    楼上正解
    下面是一个调用API函数的例子: 
    [DllImport("KERNEL32.DLL", EntryPoint="MoveFileW", SetLastError=true, 
    CharSet=CharSet.Unicode, ExactSpelling=true, 
    CallingConvention=CallingConvention.StdCall)] 
    public static extern bool MoveFile(String src, String dst); 你直接用MoveFile方法就行了
      

  6.   

    不行啊,各位高手给一个DEMO
    DLL原型
    short GetNumber( byte Msg[31] );
    说明:
    cardNo[31]: 0-11是卡号,12-15是时间,16-30操作员

    卡号 = "12345";
    时间 = "2006-12-1";
    操作员 = "TEST";
    如何将写这个DEMO。快,很急。
      

  7.   

    byte[] bb = new byte[31];
     for(int k=0;k<bb.Length;k++)
     bb[k] =(byte)k;
     short sh = GetNumber(bb);
    问题在于数据转到byte[]的格式
      

  8.   

    Knight94(愚翁),你说的对,时间转换我忘记写,这个先不要考虑啦,就当12-15是几个字符,我关键想知道的是像这种DLL在C#中如何调用,给我一个DEMO啊,谢谢!谢谢大家!
      

  9.   

    如果是string => byte[]
    byte[] bData = Encoding.ASCII.GetBytes( yourString );至于整合,通过Array.Copy来合并。
      

  10.   

    short GetNumber( byte Msg[31] );
    说明:
    cardNo[31]: 0-11是卡号,12-15是时间,16-30操作员

    卡号 = "12345";
    时间 = "2006";
    操作员 = "TEST1";
    +++++++++++++++++++++++++++++++
    好像你这样做有点问题.我给你看一下我的引用,请指点.
    [DllImport("Test.DLL")]
    public static extern short GetNumber( ref System.Text.StringBuilder strMsg );调用:
    public staitc short TestDll()
    {
    StringBulider st = new StringBulider("1234500000002006TEST1");
    short i = GetNumber( ref System.Text.StringBuilder strMsg )
    return i;
    }
    您帮我看一下我这样做问题出在哪里,谢谢。
    说明:原DLL中的传入参数是引参,不是值参,所以我用了"ref".
    以上DLL说明中提供了一个VFP的调用例子,如下
    declare short GetNumber in TestDll;
    string @Msg
      

  11.   

    (更正)
    Knight94(愚翁) 
    short GetNumber( byte Msg[31] );
    说明:
    cardNo[31]: 0-11是卡号,12-15是时间,16-30操作员

    卡号 = "12345";
    时间 = "2006";
    操作员 = "TEST1";
    +++++++++++++++++++++++++++++++
    好像你这样做有点问题.我给你看一下我的引用,请指点.
    [DllImport("Test.DLL")]
    public static extern short GetNumber( ref System.Text.StringBuilder strMsg );调用:
    public staitc short TestDll()
    {
    StringBulider st = new StringBulider("1234500000002006TEST1");
    short i = GetNumber( ref st )
    return i;
    }
    您帮我看一下我这样做问题错在哪里,谢谢。
    说明:原DLL中的传入参数是引参,不是值参,所以我用了"ref".
    以上DLL说明中提供了一个VFP的调用例子,如下
    declare short GetNumber in TestDll;
    string @Msg
      

  12.   

    ASP.NET(C#)技术讨论群:30417196,限工作人士
      

  13.   

    .net 技术交流群  欢迎大家的加入  
            群内高手为您解疑
    群号 : 11623794