c# 调用c++ 使用指针传递的时候
http://www.cnblogs.com/warensoft/archive/2011/12/09/warenosoft3d.html
上面这篇文章很好解释了。
简单记录一下:
1. 声明 注意 DLL 一定要放到bin 目录底下,否则会提示找不到。 如果使用了指针要使用 unsafe 关键字,声明一个DLL 开放的函数 函数名、参数要保持一直。
[DllImport("dll_test.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
public unsafe static extern void initQrsDet(int pack_min);
[DllImport("dll_test.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
public unsafe static extern void find_rr_5minpack(short* in_data, int in_data_len, float* out_data, int* out_data_len);
int outLen = 0;
float[] outArray = new float[100000];
fixed (short* inData = &ecgData[0])
{
fixed (float* outData = &outArray[0]) // 这里传递一个数组的指针 c# 使用指针要用关键字 fixed 锁定 整型的传递要加一个&符号 回传的outData指针会直接写到outArray数组里面,通过outArray 直接得到c++ 回传的值。
{
// 5分钟 分割一次
initQrsDet(5);
find_rr_5minpack(inData, ecgData.Length, outData, &outLen);
}
}
最新文章
- ubuntu下安装mcrypt
- Android广播
- POJ做题笔记:1000,1004,1003
- 栈与队列:refresh的停车场
- Vim简要说明
- Devexpress TreeList选择父级联动
- Spark Streaming揭秘 Day16 数据清理机制
- cocos2d-x 实现粒子飞行特效
- C语言运算符运算顺序判断实例2
- Lucene——Field.Store(存储域选项)及Field.Index(索引选项)
- 【JS】VUE学习
- Asp.net core Identity + identity server + angular 学习笔记 (第一篇)
- NTP时间服务器实战应用详解-技术流ken
- zabbix 监控 WEB 应用性能
- idc市场
- LeetCode 867 Transpose Matrix 解题报告
- Sql Server与.Net(C#)中星期值对比
- 服务器开启JMX监控
- 利用HttpWebRequest模拟表单提交
- 稀疏矩阵乘法 · Sparse Matrix Multiplication