C++编写dll一部分是函数本身,一部分是函数对外声明,你的那个对外声明部分有没有返回类型,
而且你要注意在数据类型方面C++和C#是有区别的

解决方案 »

  1.   

    你试一下返回类型改为Byte[]  然后再将返回值转化成字符串
      

  2.   


    上面有点错误,c++中声明是:
    LPSTR GetReturn(BYTE bClass,USHORT uBlock,USHORT uAddr, USHORT uSubAddr)
    我知道类型有区别,LPSTR对应的是什么类型呢
      

  3.   

    这种动态库最好少用。
    返回一个字符串指针,却没有定义清楚由谁来管理内存。你销毁它可能出错,不销毁它呢又可能内存泄露。extern static IntPtr GetReturn(byte bClass, ushort uBlock, ushort uAddr, ushort uSubAddr);IntPtr ptr = GetReturn(...);
    string result = PtrToStringAnsi(ptr);
    // Marshal.FreeHGlobal(ptr);  
      

  4.   

    LPSTR:一个32位指向字符串的指针,相当于C语言中的char *,在C#中应该用byte[]处理
      

  5.   

    BOOL LPSTR //那个是返回值?? BOOL OR LPSTR
    GetReturn(BYTE bClass,USHORT uBlock,USHORT uAddr, USHORT uSubAddr)