C#调用VC的DLL CallBack函数问题,CallBack函数返回数据有问题
VC实现一个DLL,其中一个导出方法接受一个函数指针,实现Callbak功能,
下面是DLL的导出函数。
typedef void (WINAPI *fnCallBack)(LPCTSTR ptr);
extern "C" __declspec(dllexport) void ShowMsg(fnCallBack t)
{
return t(_T("abcdef"));
}
C#中采用delegate实现回调函数的定义,如下
public delegate void OnMsgDlg(string str);
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OnMsgDlg omd = new OnMsgDlg(Form1.OnMsg);
ShowMsg(omd);
}
[DllImport("DllProject.dll")]
public static extern void ShowMsg(OnMsgDlg fnCallback);
public static void OnMsg(string str)
{
MessageBox.Show(str);
}
}
运行结果错误,本应现实"abcdef",结果只显示一个"a",请问原因是什么?