首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

编译能通过连接不能通过的有关问题

2013-04-09 
编译能通过连接不能通过的问题。各位哥哥姐姐,小弟我刚刚开始学windows编程。有个疑惑还请哥哥姐姐们指教下

编译能通过连接不能通过的问题。
  各位哥哥姐姐,小弟我刚刚开始学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函数不可用。

热点排行