动态连接库里函数原型
char *decodestr  Decode(   char   *Codeingstr);  我的定义:
[DllImport("convert.dll", EntryPoint = "Decode", CallingConvention = CallingConvention.StdCall)]  
public static extern String Decode(String input); 为什么我调用Decode()返回的总是0000000000,不知是什么原因?请大家帮忙看看!
是不是返回值字符指针不是对应C#的String

解决方案 »

  1.   

    返回的char*是对应C#的string加上CharSet=CharSet.Ansi试试参考
    http://msdn.microsoft.com/library/CHS/cpguide/html/cpconStringsSample.asp
      

  2.   

    加上CharSet=CharSet.Ansi也不行,但Delphi这样声明如下却是正确的
      function Coding(input:string):pchar;
      stdcall;far;external 'convert.dll'name 'Coding';
      function Decode(input:string):pchar;
      stdcall;far;external 'convert.dll'name 'Decode';
      

  3.   

    把CallingConvention = CallingConvention.StdCall去掉行吗,我看你没把函数声明为__stdcall
      

  4.   

    不行,你们有没有返回类型为char *的列子呀?
      

  5.   

    我上面给你的连接里有char*的例子
      

  6.   

    有没有谁调用DLL里函数返回值类型是指针的?
      

  7.   

    1、char*   对应的就是  System.String2、CallingConvention = CallingConvention.StdCall??为什么一定要加这个?lz在wince上开发?
      

  8.   

    返回的“0000000000”?
    那应该是dll api的问题
      

  9.   

    我改成下面的形式后:  
    [DllImport("ConvertDll.dll", EntryPoint = "Decode",
            CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
            public static extern string Decode([MarshalAs(UnmanagedType.AnsiBStr)]string input);
    单步执行是正确,直接运行出现外部组件发生异常。不知道为什么?