是否要用模块文件,怎么使用啊?
类似于此,错误在哪?
LIBRARY "aecppc"EXPORTS
InitAEC @ 1
SaveSample @ 2
AECFilter @ 3
; 此处可以是显式导出
DLL和调用程序仅能编译通过,我也将dll靠到了对应目录下
但是一运行,就提示找不到dll
请各位指点.多谢!
在线等
类似于此,错误在哪?
LIBRARY "aecppc"EXPORTS
InitAEC @ 1
SaveSample @ 2
AECFilter @ 3
; 此处可以是显式导出
DLL和调用程序仅能编译通过,我也将dll靠到了对应目录下
但是一运行,就提示找不到dll
请各位指点.多谢!
在线等
解决方案 »
- C#连接sql server数据库连接不到的问题!!求助
- 如何通过方法名称调用方法
- VS05中 为什么我的DataGrid没有DataBind()方法呢?
- 注释无法显示
- 如何取得checkboxlist所以选中的项,将它们存如数据库的一个字段?
- 同志们给点建议啊!!!
- 简单问题???????????
- 在C#.NET如何得到当前系统中的可连接数据库服务器和对应数据库服务器中的所有数据库?谢谢
- 用VS.net2003的“服务器资源管理器”为何只能浏览Oracle数据库表而不能新建或者修改数据库表?
- 请教一个关于以一个List集合为类属性时,get、set设置问题
- 请问,如何给live messenger写插件?
- 如何给datagridview手工添加普通列?
or
extern "C" __cdecl把你的dll弄过来看看 可是运行的时候还是找不到
//什么提示。
LIBRARY "aecppc" EXPORTS
InitAEC @ 1
SaveSample @ 2
AECFilter @ 3
接口代码:
[DllImport("aecpppc.dll")]
public static extern int CSaveSample(double[] buf);
[DllImport("aecpppc.dll")]
public static extern int CAECFilter(double[] buf);
DLL库中:
extern BOOL CInitAEC()
{
theApp->InitAEC();
return true;
}extern BOOL CSaveSample(double *buf)
{
theApp->SaveSample(buf);
return true;
}
extern BOOL CAECFilter(double *buf)
{
theApp->AECFilter(buf);
return true;
}解决即送分,请大家指教!
BOOL CaecppcApp::InitAEC()
{
if ((m_pNearEndBuf = new double[sizeof(double)*FRAME_SIZE]) == NULL )
return FALSE; if ((m_pE = new double[sizeof(double)*FRAME_SIZE]) == NULL )
return FALSE; if ((m_pFIRBuf = new double[sizeof(double)*(TAP_NUM+SOUNDCARD_DELAY+FRAME_SIZE)]) == NULL )
return FALSE; if ((m_pTap = new double[sizeof(double)*TAP_NUM]) == NULL )
return FALSE; if ((m_pTap_Old = new double[sizeof(double)*TAP_NUM]) == NULL )
return FALSE; ZeroMemory(m_pNearEndBuf,sizeof(double)*FRAME_SIZE);
ZeroMemory(m_pFIRBuf,sizeof(double)*(TAP_NUM+SOUNDCARD_DELAY+FRAME_SIZE));
ZeroMemory(m_pTap,sizeof(double)*TAP_NUM);
ZeroMemory(m_pTap_Old,sizeof(double)*TAP_NUM);
ZeroMemory(m_pE,sizeof(double)*FRAME_SIZE); InitializeCriticalSection(&m_Aec_Critical_Section); m_nBufCount = 0;
m_FarEnergy = 0.0;
m_FarZCR = 0.0;
m_NearEnergy = 0.0;
m_NearZCR = 0.0;
m_Ee = 0.0;
m_dNMD[0]=0.0;m_dNMD[1]=0.0;
m_dGRAD_NMD = 0.0; m_bFarEndActive = FALSE;
m_nFarEndSilenceCount = 0;
m_bDoubleTalk = FALSE;
m_nDoubleTalkCount = 0;
m_nUnStableCount =0; return TRUE;
}//////////////////////////////////////////////////////////////////////
// Save one frame of remote voice sample and
// calculate the parameters
// return: TRUE = Remote ACTIVE, mean remote user is speaking
// FALSE= Remote UNACTIVE, mean remote user is not speaking
//////////////////////////////////////////////////////////////////////
BOOL CaecppcApp::SaveSample(double *buf)
{
int i; EnterCriticalSection(&m_Aec_Critical_Section); // The bug content
// FIR Register Soundcard delay New samples
// |____________|______________|___|
// | | |
// \
//
CopyMemory((m_pFIRBuf+TAP_NUM+SOUNDCARD_DELAY),buf,sizeof(double)*FRAME_SIZE); for (i=0;i<FRAME_SIZE;i++)
*(m_pFIRBuf+TAP_NUM+SOUNDCARD_DELAY+i) *= AMPL_SCALE_1; FarEndPreFilter( m_pFIRBuf+TAP_NUM+SOUNDCARD_DELAY); m_FarEnergy = FrameEnergy(m_pFIRBuf,FRAME_SIZE+TAP_NUM);
m_FarZCR = FrameZCR(m_pFIRBuf,FRAME_SIZE+TAP_NUM); if (m_FarEnergy>SILENCE_ENERGY_THRESHOLD && m_FarZCR>SLIENCE_ZCR_NUM)
m_nFarEndSilenceCount = 0;
else
{
m_nFarEndSilenceCount++;
m_nFarEndSilenceCount &= 0xFF;
}
if (m_nFarEndSilenceCount<MAX_SILENCES)
m_bFarEndActive = TRUE;
else
{
m_bFarEndActive = FALSE;
m_nDoubleTalkCount = 0;
} LeaveCriticalSection(&m_Aec_Critical_Section); return m_bFarEndActive;
}//////////////////////////////////////////////////////////////////////
// Input one frame of local voice. Do AEC to this frame
// Return: TRUE = double-talk
// FALSE= no double-talk
//////////////////////////////////////////////////////////////////////
BOOL CaecppcApp::AECFilter(double *buf)
{
int i; EnterCriticalSection(&m_Aec_Critical_Section); CopyMemory(m_pNearEndBuf,buf,sizeof(double)*FRAME_SIZE); for (i=0;i<FRAME_SIZE;i++)
*(m_pNearEndBuf+i) *= AMPL_SCALE_1; NearEndPreFilter(m_pNearEndBuf); m_NearEnergy = FrameEnergy(m_pNearEndBuf,FRAME_SIZE);
m_NearZCR = FrameZCR(m_pNearEndBuf,FRAME_SIZE); if (m_bFarEndActive )
{
m_bDoubleTalk = NLMS(); for (i=0;i<FRAME_SIZE;i++)
*(m_pE+i) *= AMPL_SCALE_2; CopyMemory(buf,m_pE,sizeof(double)*FRAME_SIZE);
} MoveMemory(m_pFIRBuf,m_pFIRBuf+FRAME_SIZE,sizeof(double)*(TAP_NUM+SOUNDCARD_DELAY)); ZeroMemory((m_pFIRBuf+TAP_NUM+SOUNDCARD_DELAY),sizeof(double)*FRAME_SIZE); LeaveCriticalSection(&m_Aec_Critical_Section); return m_bDoubleTalk;
}