当前位置:编程学习 > C#/ASP.NET >>

在C SHARP中调用dll中带有指针声明的函数据遇到的问题,请高人指点

在dll中有一函数如下
void speex_echo_cancel(const short *in, const short *far_end, short *out, short *Yout){}
现用在 c sharp中调用
如下:

    [DllImport("libspeex.dll", PreserveSig = true)]
          private extern static void speex_echo_cancel(  SpeexEchoState_ *st,    short   *rec,   short    *play, short  *out_, int  *  Yout);

使用:
            short[]  echo_buf=new short[NN+1];//原始文件(包含回声)
            short[] ref_buf = new short[NN + 1];//要消除的声音(回声)
           short[] e_buf = new short[NN + 1];//原始文件(包含回声)-要消除的声音(回声)=要得到的声音
            int[] noise = new int[NN + 1];
//调用
  speex_echo_cancel((short*)ref_buf, (short*)echo_buf, (short*)e_buf,  (int *)noise);
在编译时出现问题,我的目的是用把数据组echo_buf,ref_buf,e_buf,noise 作为参数传入函数speex_echo_cancel

其实我也不是很清楚怎样传参数,以以前学C的经验,传数据的地址进入函数就应该可以了,即直接传数据名就OK了,可在这里不行,请熟知C SHARP 调用DLL的网友大力支持,这个也正是我在做一个音频回声干扰的小程序.
 我的联系方式:
  Qq 13581754;email:seal_bird21th@sohu.com
               --------------------编程问答-------------------- *-->intptr
--------------------编程问答-------------------- 能产能详细一点
void   speex_echo_cancel(const   short   *in,   const   short   *far_end,   short   *out,   short   *Yout){} 
这个函数是C++里写的 --------------------编程问答-------------------- 还有 在C SHARP 中 有什么关键字与 c++中的 const对应 --------------------编程问答-------------------- 我现在用的是 unsafe 关建字,所以保留了C的*指针操作符 --------------------编程问答-------------------- 我也知道另外一种方式是通过IntPtr来处理,但处理时遇到问题却不怎么好解决... --------------------编程问答-------------------- c++
speex_echo_cancel(const   short   *in
c#
speex_echo_cancel(     SpeexEchoState_   *st,    
=====
???
--------------------编程问答-------------------- 不好意思,写错了.. --------------------编程问答-------------------- 1212 --------------------编程问答-------------------- [code]dddd[/code]
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,