zoukankan      html  css  js  c++  java
  • 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); 
    }
    }

  • 相关阅读:
    c语言 9-3
    c语言 9-12
    c语言 9-11
    c语言 9-10
    c语言中实现字符串大小写的转换
    tyvj1106 登山
    tyvj1125 JR's chop
    tyvj1148 小船弯弯
    tyvj1087 sumsets
    tyvj1086 Elevator
  • 原文地址:https://www.cnblogs.com/90nice/p/4728432.html
Copyright © 2011-2022 走看看