我用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方法的返回值是正常的,求支招。