|
#ifdef TSO_EXPORTS
#define TSO_API __declspec(dllexport)
#else
#define TSO_API __declspec(dllimport)
#endif
extern "C" TSO_API void WINAPI Show(char* &p)
{
p="调用成功";
}
然后C#调用
[DllImport("TSO.dll",EntryPoint="Show",CharSet=CharSet.Auto)]
public static extern void Show(ref StringBuilder str);
private void button1_Click(object sender, EventArgs e)
{
StringBuilder str = new StringBuilder(128);
Show(ref str);
MessageBox.Show(str.ToString());
}
结果程序提示vchost已停止工作或者程序直接死掉。
我开始这样写
extern "C" TSO_API void WINAPI Show(char* p)
{
p="调用成功";
}
这样不对,因为形参不影响实参
后来我有这么写
extern "C" TSO_API char* WINAPI Show()
{
char *p="调用成功";
return p;
}
这种方法也不行,因为局部变量在函数调用完以后释放了
我换成CString也不行。我都不知道怎么搞了,大神出来帮忙呀
|
|