• 8475阅读
  • 1回复

新手请教:QT4中调用win32 API问题 [复制链接]

上一主题 下一主题
离线huybin_wang
 
只看楼主 倒序阅读 楼主  发表于: 2008-10-18
— 本帖被 XChinux 执行加亮操作(2008-11-02) —
QT4中使用DLL库调用win32 API.编译通过,运行出错.代码如下:

  1. void Hello::on_Stop_clicked()
  2. {
  3.     QLibrary mylib("Winmm.dll");
  4.     if(mylib.load())
  5.     {
  6.     //    QMessageBox::information(this,tr("info"),tr("load dll ok"));
  7.         typedef BOOL (*MyPrototype)(LPCSTR,HMODULE,DWORD);
  8.         MyPrototype sound_play=(MyPrototype)mylib.resolve("PlaySound");
  9.         if(sound_play)
  10.         {
  11.             sound_play("E:\\HelloWin.wav",NULL,SND_SYNC|SND_FILENAME);
  12.         }
  13.     }
  14. }


编译运行后,可以播放WAV文件,可播放完成后则弹出"应用程序错误"对话框:
"应用程序发生异常 未知软件异常(0xc0000409),位置为0x004029a3."

进入调试后,弹出对话框提示:
========================================================================
在已损坏了程序内部状态的 Hello.exe 中发生了缓冲区溢出。按“中断”以调试程序,或按“继续”以终止程序。

有关更多详细信息,请参见“帮助”主题“如何调试缓冲区溢出问题”。
=========================================================================

请问,这是怎么回事?在QT中如何正确调用WIN32 API?
盼复,不甚感激!
QQ:976026809
离线huybin_wang
只看该作者 1楼 发表于: 2008-10-18
原来QT中可以直接调用WIN32 API. 之前使用WIN32 API播放不了,只因为字符编码格式的问题,导致找不到WAV文件.'

使用resolve出现缓冲区溢出的原因尚不清楚.
[ 此贴被huybin_wang在2008-10-19 16:21重新编辑 ]
QQ:976026809
快速回复
限100 字节
 
上一个 下一个