在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#