C中dll:
extern "C" __declspec(dllexport) bool open(string &username)
{
}C#中: 
[DllImport("File.dll")]
static extern bool open(ref string username);调用:
string username = l.username;
open(ref username);
请问下要怎么改才不会出错啊?

解决方案 »

  1.   

    怎么改C#代码都会出错,这个C++代码要求调用者创建一个同一版本的STL对象,连跨debug和release都做不到,更不用说跨语言了。
    你可以要求DLL作者更改函数类型,比如返回一个BSTR或者填充一个调用者预分配的缓冲区。
      

  2.   

    string &username 对应ref string username?
      

  3.   

    http://www.cnblogs.com/moses/archive/2009/04/07/1430906.html查阅数据类型封装Dll时报这种错,通常都是封装参数问题。