1、C++方法声明
extern"C" __declspec(dllexport)char* test1(HWND parent, char* input)
{
return input;
}
2、C#引入
[DllImport("libMath.dll", CallingConvention = CallingConvention.Cdecl,EntryPoint = "test1",CharSet =CharSet.Auto)]
public static extern IntPtr test1(IntPtr parent,string input);
注意: C++中返回类型为char*,C#中用IntPtr接收;
这里使用CharSet =CharSet.Auto为了接收时候使用 Marshal.PtrToStringAuto( 接收的值)获得返回string类型的值
3、C#调用
public void Call()
{
var res = test1(this.Handle, "hello DLL 6666");
//成功拿到C++返回的值,转换为string类型,这里要和引入部分CharSet = CharSet.Auto一致
var strRes = Marshal.PtrToStringAuto(res);
}