C++中的函数声明是这样的
std::string GetString(const std::string& s);在C#中怎么写呢
 [DllImport("",EntryPoint="",CharSet=CharSet.Auto,CallingConvention=)]C++中的调用约定是Cdecl

解决方案 »

  1.   

    http://stackoverflow.com/questions/799076/returning-a-stdstring-from-a-c-dll-to-a-c-program-invalid-address-specifi
      

  2.   

    用了类库的转不了,先用char*之类的包装一下吧
      

  3.   

    那如果是 char* f(char*)又怎么转。崩溃了昨晚都没调出来,老是内存访问出错 
      

  4.   

    如果C++函数的参数是char*(或其类似的),如果是传入参数, C#里用string,传出参数,C#里用StringBuilder,空间要预先分配足。
      

  5.   

    [DllImport("MyDll", EntryPoint = "GetString")]      
    [return: MarshalAs(UnmanagedType.LPStr)]
    public static extern string GetString(string);  
    {
    }
    return Marshal.PtrToStringAnsi(GetDLLName()); 试下