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

标签 c++ windows winapi dll

<分区>

我正在尝试从 DLL 中播放音乐。但是,每当我尝试这样做时,PlaySound 函数什么都不做。

我已经尝试过将 wav 文件放在资源中,并且我知道当我将 DLLMain 编译为普通主程序时,代码可以正常工作,它可以毫无问题地播放音乐。 DLLMain 代码如下所示:

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

return TRUE;

奇怪的是,我可以看到这首歌在程序的内存中;当它播放一首歌时,它的内存使用量上升到它应该做的,但是它没有声音。此外,编译为 exe 的相同代码也能完美运行;我不知道出了什么问题。

更新: 原来这是因为您不能在 DLLMain 中执行很多事情 - 有什么办法可以解决这个问题吗?

最佳答案

你只能做 a limited number of thingsDllMain 中,我很确定 PlaySound 不是其中之一。

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

关于c++ - PlayFunction 在 DLL 中不起作用,但在独立 exe 中起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57629715/

相关文章:

c# - 从 Visual C++ 调用 C# 代码

javascript - 如何通过 navigator.plugins 使 ActiveX 对象可发现?

linux - 如何使用 AutoResetEvent 从 Windows 移植到 Linux 进程间事件

c++ - EnumDesktopWindows (C++) 大约需要 30 分钟才能在 Windows 10 上找到所需的打开窗口

c++ - Editreturn 我不太明白这里问的递归函数的概念 (c++)

c++ - 想要将结构数组从 perl 脚本传递到 cpp 文件

c++ - 为什么静态数据成员不能与非静态数据成员同名?

c - 如何在 MinTTY 下关闭 echo ?

winapi - 同时多键按下释放延迟

c++ - 将嵌入资源保存到文件系统