C++代码
void SetCallback(CPPCallback callback)
{
char *p = "from C++";
callback(p);
}
C#代码
[DllImport("DLLTest")]
private static extern void SetCallback( CSCallback callback );
public delegate void CSCallback( IntPtr num );
static CSCallback callback;
void Start()
{
callback = CSCallbackFunction;
}
static void CSCallbackFunction( IntPtr num )
{
string str = Marshal.PtrToStringAnsi( num );
Debug.Log("====== " + str);
}
在按钮事件中调用 SetCallback(callback);
IntPtr与string互转
IntPtr init = Marshal.StringToHGlobalAnsi(textBox1.Text);
textBox2.Text = Marshal.PtrToStringAnsi(outit);
Marshal.FreeHGlobal(outit);