QT4中使用DLL库调用win32 API.编译通过,运行出错.代码如下:
- void Hello::on_Stop_clicked()
- {
- QLibrary mylib("Winmm.dll");
- if(mylib.load())
- {
- // QMessageBox::information(this,tr("info"),tr("load dll ok"));
- typedef BOOL (*MyPrototype)(LPCSTR,HMODULE,DWORD);
- MyPrototype sound_play=(MyPrototype)mylib.resolve("PlaySound");
- if(sound_play)
- {
- sound_play("E:\\HelloWin.wav",NULL,SND_SYNC|SND_FILENAME);
- }
- }
- }
编译运行后,可以播放WAV文件,可播放完成后则弹出"应用程序错误"对话框:
"应用程序发生异常 未知软件异常(0xc0000409),位置为0x004029a3."
进入调试后,弹出
对话框提示:
========================================================================
在已损坏了程序内部状态的 Hello.exe 中发生了缓冲区溢出。按“中断”以调试程序,或按“继续”以终止程序。
有关更多详细信息,请参见“帮助”主题“如何调试缓冲区溢出问题”。
=========================================================================
请问,这是怎么回事?在QT中如何正确调用WIN32 API?
盼复,不甚感激!