我在调用动态连接库用到了以下语句:
typedef int(CALLBACK* DLLFUNC)(
 BE_CONFIG *beConfig, PDWORD dwSamples, 
 PDWORD dwBufferSize, PHBE_STREAM phbeStream
                              );

HINSTANCE hdll;
DLLFUNC beInitStream;
hdll=LoadLibrary("lame_enc");
AFX_MANAGE_STATE(AfxGetStaticModuleState( ))
beInitStream=(DLLFUNC)GetProcAddress(hdll,"beInitStream");
    if(beInitStream(&bc,&dwsample,&dwbufsize,&hstream)!=BE_ERR_SUCCESSFUL)
{
MessageBox("初始化MP3失败");
return;
}
但是在程序运行时提示的错误为:
wavtomp.exe 中的 0x00000000 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突 。
求大家指点一下;

解决方案 »

  1.   

    hdll=LoadLibrary("lame_enc");
    你需要判断动态库载入是否成功阿。以你的结果看,这个hdll应该是有问题的。
    beInitStream也需要判断是否有效。你的程序没有判断这些异常。因此只要出现异常,就报这种错误了。
      

  2.   

    有可能没有load成功,而且怎么连文件的扩展名都不写?hdll=LoadLibrary("lame_enc");  //lame_enc.dll?
      

  3.   

    DLL是否加载成功?函数指针是否获取?怎么没有判断呢?
      

  4.   

    0x00000000 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突 。
    很显然beInitStream==NULL
      

  5.   

    beInitStream现在应该是NULL,调用失败了
      

  6.   

    谢谢大家的指点,最后发现的确是没有调用成功啊,
    其中的原因可能有二:一是hdll=LoadLibrary("lame_enc.dll"); 
    二是dll文件的位置没放好,很感谢大家