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中改变传入的地址,否则会报错。