C#调用C++DLL,返回类型为char*

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);

}

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值