andyzhangxuwen1
zhangxuwen99
2017-12-01 02:58

C#调用C++DLL时char *类型参数的值不会变,求支招。

  • c++
  • stringbuilder

我用C++做了一个DLL,code如下:
char* ReadString(const char *sec, const char *key,char *def, const char *file)
{

ZeroMemory(strReturnValue,sizeof(strReturnValue));

int i = GetPrivateProfileString(sec, key, "",strReturnValue, 2048, file);

def = &strReturnValue[0];

return strReturnValue;
}
然后用C#来调用这个函数,code如下:
[MarshalAs(UnmanagedType.LPStr)]
StringBuilder def;
private void button1_Click(object sender, EventArgs e)
{
string a = "No data exsit.";
def = new StringBuilder(a);
string file = Environment.CurrentDirectory + "\uConfig.ini";

        string aa = iFunction.ReadString("Config", "MesDB", def, file);    
    }
            不知道为什么这个char *def的值就是改变不了,一直为a,  但ReadString方法的返回值是正常的,求支招。
  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答