我正在尝试从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中执行很多事情-有什么解决办法吗?
答案 0 :(得分:2)
您只能在DllMain
中进行a limited number of things,而且我很确定PlaySound
不是其中之一。
相反,请尝试从DLL中的另一个函数调用它。