编译能通过连接不能通过的问题。
各位哥哥姐姐,小弟我刚刚开始学windows编程。有个疑惑还请哥哥姐姐们指教下啊。例题代码如下:
#include <windows.h>
#include <mmsystem.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 关机.wav"),NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
MessageBox(NULL,"","",MB_OK);
return 0;
}
这是一个很简单的api调用的代码。以前我只知道要调用什么函数就得在程序的开头添加相应的头文件,所以那个“#include<mmsystem.H>”我明白是什么意思,因为调用了"playsound()"这个函数。但是如果仅仅这样就能编译成功了么?居然还不能,还需要在编译器(编译器是:c-free)的工程设置里添加一个"winmm"的东东,如果不添加这个东东的话编译能通过,但是连接就会出错。书上说是什么连接库,各位哥哥姐姐们,能不能解释下这个东东到底是什么啊?? 编程
[解决办法]
mmsystem.h中只是包含了playsound函数的声明,而winmm.lib才有playsound函数实现的代码,所以必须链接winmm库才能使得link成功。
[解决办法]
如果使用Microsoft Visual C++ 为此程序建立新项目,那么得加上连结程序所需的链接库文件。从Project菜单选择 Setting选项,然后选取Link页面标签。从 Category清单方块中选择General,然后在 Object/Library Modules文字方块添加WINMM.LIB(Windows multimedia-Windows多媒体)。这样做是因为将使用多媒体功能呼叫,而内定的项目中又不包括多媒体链接库文件。不然连结程序报告了错误信息,表明PlaySound函数不可用。