C#非托管调用C++dll 并为传址引用 VS2015

C#非托管调用C++ dll 并为传址引用 VS2015

1.VS2015 创建C++ dll

1.Visual C++——Win32 控制台应用程序
在这里插入图片描述
2.下一步——DLL——导出符号
在这里插入图片描述
3.需要注意的地方
在这里插入图片描述

4.适用C#调用的方法
在这里插入图片描述

C#非托管调用

1.首先把上面生成的dll复制到C#工程的bin——debug里面
在这里插入图片描述
2.根据dll的平台修改C#工程的设置
在这里插入图片描述
3.设置非托管的接口
在这里插入图片描述
4.正常添加方法使用就好了

传址引用

其中可以看到double[] x和double[] y都是数组,但是实际上传入dll的是数组首地址,而因为地址无法包括长度,所以长度要额外用一个参数传入。
在C++中通过double *x1 = (double*)x; double *y1 = (double*)y;获得指针,而指针可以直接转为相应的数组。 x1[i] = 1; y1[i] = 2;可以直接修改数组的值而不影响地址,所以返回的x,y其实没有变化,但是在x,y地址中的值发生了变化。
不要在dll中改变传入的地址,否则会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酱油一只

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值