使用MinGW + Eclipse在Win32程序中播放声音

时间:2013-11-17 15:57:58

标签: c++ eclipse winapi c++11 mingw

正如您从标题中看到的那样,我使用MinGW和Eclipse制作一个Win32应用程序,它可以从自己的资源中播放声音。我是这个MinGW编译器和Eclipse的新手,我的C ++有点生疏。目前不能使用VC ++。

所以,据我所知,我在向应用程序添加一些库内容时遇到了麻烦。

我的代码如下

//MyClass.cpp

#include <windows.h>
#include <mmsystem.h>

#pragma comment(lib,"libwinmm.a")

#include "MyClass.h"
#include "../resources.h"

/*------------------------------------*/

void MyClass::Enable() {
    _isEnabled = true;
    PlaySound(MAKEINTRESOURCE(ActivatedSound), NULL, SND_RESOURCE | SND_ASYNC);
}

//resources.h

#define ActivatedSound 2001

//resources.rc

ActivatedSound WAVE "resources/sounds/activated.wav"

编译器选项:-c -fmessage-length = 0 -std = c ++ 11

链接器标志:-mwindows

我在调用PlaySound功能的行中收到错误。

错误:对PlaySoundA @ 12&#39;

的未定义引用

有谁能告诉我我做错了什么,以及如何解决它?

更新

似乎我通过添加包含&#34; winmm&#34;的记录来解决我的问题。到项目设置下的库字段 - &gt; MinGW C ++ Linker - &gt;图书馆 http://i.stack.imgur.com/q2N8f.png

...当然删除#pragma语句也有帮助。

2 个答案:

答案 0 :(得分:1)

GCC不了解VS链接器编译指示。这意味着添加

-lwinmm

到链接器标记自己,就像使用任何其他编译器一样。

答案 1 :(得分:0)

问题是我没有在正确的字段中指定我试图使用的库(-lwinmm)。 因此,我不得不将其添加到链接器标志中,而是将其添加到库列表中(duh ..)。

在Eclipse(Kepler)中,此列表位于Project Properties - &gt;下。 C / C ++ Build - &gt;设置 - &gt; MinGW C ++ Linker - &gt;库,然后单击添加按钮并输入 winmm ,而不使用 -l <​​/ em>

这是一个屏幕截图,显示它应该是什么样子,如果我不够具体:

enter image description here