函数声明: 
char * App_report ()
输入/输出参数
输入参数:  无
输出参数:  返回用户上行状态报告的字符指针:
前16个字节为用户下行状态报告ID:
接着8个字节为用户下行状态报告状态
后面4个字节为标志(1.成功.0.失败)
返回值:    长度大于10为有下行状态报告过来,否则没状态报告
上面是一接口文档说明。
请问这个在C#中如何调用。

解决方案 »

  1.   

    首先确定那个函数是 stdcall 的,而且已经被导出。然后这个 string App_report() 就可以。
      

  2.   

            [DllImport("smsdll.dll", EntryPoint = "App_report", CallingConvention = CallingConvention.Cdecl)]
            public static extern byte App_report ();//  listBox1.Items.Add(App_report().ToString());上面是我的代码
      

  3.   

    我改成 stdcall 返回值还是一样的。难道该函数返回值就是255吗?
      

  4.   


    为何返回值byte,byte的位都是1就是255.....
      

  5.   

    string 要报像。尝试读取或写入受保护的内存。这通常指示其他内存已损坏。请问怎么用这个函数呢?我是从DELPHI转过来的。很多不懂,请多多指教
      

  6.   

    将返回值改为StringBuilder,试试看
      

  7.   

    StringBuilder 试了。用这个出现以下错误 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
    头都要弄大了
      

  8.   

    C#调用DLL文件时参数对应表
    Wtypes.h中的非托管类型  非托管 C语言类型        托管类名                说明 
    HANDLE           void*                     System.IntPtr                 32 位 
    BYTE             unsigned char             System.Byte                   8 位 
    SHORT            short                     System.Int16                  16 位 
    WORD              unsigned short           System.UInt16                 16 位 
    INT               int                      System.Int32                  32 位 
    UINT               unsigned int            System.UInt32                  32 位 
    LONG              long                     System.Int32                  32 位 
    BOOL              long                     System.Int32                  32 位 
    DWORD             unsigned long            System.UInt32                 32 位 
    ULONG              unsigned long           System.UInt32                 32 位 
    CHAR              char                     System.Char                   用 ANSI 修饰。
    LPSTR             char*              System.String 或 System.StringBuilder   用 ANSI 修饰。 
    LPCSTR            Const char*        System.String 或System.StringBuilder   用 ANSI 修饰。 
    LPWSTR            wchar_t*           System.String 或System.StringBuilder   用 Unicode 修饰。 
    LPCWSTR           Const wchar_t*     System.String 或System.StringBuilder   用 Unicode 修饰。 
    FLOAT              Float             System.Single                       32 位 
    DOUBLE             Double            System.Double                       64 位