PlayFunction在DLL中不起作用,但在独立exe中起作用

时间:2019-08-23 16:05:30

标签: c++ windows winapi dll

我正在尝试从DLL中播放音乐。但是,无论何时尝试,PlaySound函数都不会执行任何操作。

我已经尝试过将wav文件包含在资源中,并且我知道代码的工作原理与将DLLMain编译为普通main时一样,它播放音乐没有问题。 DLLMain代码如下所示:

if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
    PlaySoundA("C:\\Sound.wav", NULL, SND_FILENAME);
}

return TRUE;

奇怪的是,我可以看到歌曲在程序的内存中。它的内存使用量取决于播放歌曲时的处理方式,但是没有声音。同样,编译到exe的相同代码也可以正常工作。我不知道怎么了。

更新: 事实证明,这是因为您无法在DLLMain中执行很多事情-有什么解决办法吗?

1 个答案:

答案 0 :(得分:2)

您只能在DllMain中进行a limited number of things,而且我很确定PlaySound不是其中之一。

相反,请尝试从DLL中的另一个函数调用它。