游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2796|回复: 6

我编写的播放声音文件的程序怎么调试不通呢?

[复制链接]

21

主题

116

帖子

166

积分

注册会员

Rank: 2

积分
166
发表于 2004-4-3 19:06:00 | 显示全部楼层 |阅读模式
谁知道,winmm.lib—windows多媒体库扩展。请把该文件位于你的编译器的lib\目录下。是什么意思哦?
谁能告诉我这下边的程序怎么才能编译通过哦?

DEMO3_2RES.H文件:
// defines for sound id's
#define SOUND_ID_CREATE      1
#define SOUND_ID_MUSIC       2

// defines for icons
#define ICON_T3DX            500

// defines for cursors
#define CURSOR_CROSSHAIR     600

DEMO3_2.RC文件:

#include "DEMO3_2RES.H"


// the sound resources
SOUND_ID_CREATE   WAVE create.wav
SOUND_ID_MUSIC    WAVE techno.wav

// icon resources
ICON_T3DX ICON T3DX.ICO

// cursor resources
CURSOR_CROSSHAIR CURSOR CROSSHAIR.CUR

DEMO3_2.CPP文件:

// DEMO3_2.CPP - Loading .WAV resources

// INCLUDES ///////////////////////////////////////////////
#define WIN32_LEAN_AND_MEAN  // just say no to MFC

#include <windows.h>   // include all the windows headers
#include <windowsx.h>  // include useful macros
#include <mmsystem.h>  // very important and include WINMM.LIB too!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "DEMO3_2RES.H"

// DEFINES ////////////////////////////////////////////////

// defines for windows
#define WINDOW_CLASS_NAME "WINCLASS1"

// GLOBALS ////////////////////////////////////////////////
HWND      main_window_handle = NULL; // globally track main window
HINSTANCE hinstance_app      = NULL; // globally track hinstance

// FUNCTIONS //////////////////////////////////////////////
LRESULT CALLBACK WindowProc(HWND hwnd,
                                                    UINT msg,
                            WPARAM wparam,
                            LPARAM lparam)
{
// this is the main message handler of the system
PAINTSTRUCT                ps;                // used in WM_PAINT
HDC                                hdc;        // handle to a device context

// what is the message
switch(msg)
        {       
        case WM_CREATE:
        {
                // do initialization stuff here

        // play the create sound once
        PlaySound(MAKEINTRESOURCE(SOUND_ID_CREATE), hinstance_app, SND_RESOURCE | SND_SYNC);

        // play the music in loop mode
        PlaySound(MAKEINTRESOURCE(SOUND_ID_MUSIC), hinstance_app, SND_RESOURCE | SND_ASYNC | SND_LOOP);

        // return success
                return(0);
                } break;

        case WM_PAINT:
                {
                // simply validate the window
                hdc = BeginPaint(hwnd,&ps);         
                // you would do all your painting here
        EndPaint(hwnd,&ps);

        // return success
                return(0);
                   } break;

        case WM_DESTROY:
                {
        // stop the sounds first
        PlaySound(NULL, hinstance_app, SND_PURGE);

                // kill the application, this sends a WM_QUIT message
                PostQuitMessage(0);

        // return success
                return(0);
                } break;

        default:break;

    } // end switch

// process any messages that we didn't take care of
return (DefWindowProc(hwnd, msg, wparam, lparam));

} // end WinProc

// WINMAIN ////////////////////////////////////////////////
int WINAPI WinMain(        HINSTANCE hinstance,
                                        HINSTANCE hprevinstance,
                                        LPSTR lpcmdline,
                                        int ncmdshow)
{

WNDCLASSEX winclass; // this will hold the class we create
HWND           hwnd;         // generic window handle
MSG                   msg;                 // generic message

// first fill in the window class stucture
winclass.cbSize         = sizeof(WNDCLASSEX);
winclass.style                        = CS_DBLCLKS | CS_OWNDC |
                          CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc        = WindowProc;
winclass.cbClsExtra                = 0;
winclass.cbWndExtra                = 0;
winclass.hInstance                = hinstance;
winclass.hIcon                        = LoadIcon(hinstance, MAKEINTRESOURCE(ICON_T3DX));
winclass.hCursor                = LoadCursor(hinstance, MAKEINTRESOURCE(CURSOR_CROSSHAIR));
winclass.hbrBackground        = (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName        = NULL;
winclass.lpszClassName        = WINDOW_CLASS_NAME;
winclass.hIconSm        = LoadIcon(hinstance, MAKEINTRESOURCE(ICON_T3DX));

// save hinstance in global
hinstance_app = hinstance;

// register the window class
if (!RegisterClassEx(&winclass))
        return(0);

// create the window
if (!(hwnd = CreateWindowEx(NULL,                  // extended style
                            WINDOW_CLASS_NAME,     // class
                                                    "Sound Resource Demo", // title
                                                    WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                                                     0,0,          // initial x,y
                                                    400,400,  // initial width, height
                                                    NULL,          // handle to parent
                                                    NULL,          // handle to menu
                                                    hinstance,// instance of this application
                                                    NULL)))        // extra creation parms
return(0);

// save main window handle
main_window_handle = hwnd;

// enter main event loop, but this time we use PeekMessage()
// instead of GetMessage() to retrieve messages
while(TRUE)
        {
    // test if there is a message in queue, if so get it
        if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
           {
           // test if this is a quit
       if (msg.message == WM_QUIT)
           break;
       
           // translate any accelerator keys
           TranslateMessage(&msg);

           // send the message to the window proc
           DispatchMessage(&msg);
           } // end if
   
    // main game processing goes here
        // Game_Main(); // or whatever your loop is called
        } // end while

// return to Windows like this
return(msg.wParam);

} // end WinMain

///////////////////////////////////////////////////////////

21

主题

116

帖子

166

积分

注册会员

Rank: 2

积分
166
 楼主| 发表于 2004-4-3 19:24:00 | 显示全部楼层

Re:我编写的播放声音文件的程序怎么调试不通呢?

temp error LNK2019: 无法解析的外部符号 __imp__PlaySoundA@12 ,该符号在函数 "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) 中被引用

temp fatal error LNK1120: 1 个无法解析的外部命令
编译出现以上错误,怎么解决呀?

0

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-4-3 19:29:00 | 显示全部楼层

Re:我编写的播放声音文件的程序怎么调试不通呢?

在代码中加入
#pragma comment(lib,"winmm.lib")
试试看


21

主题

116

帖子

166

积分

注册会员

Rank: 2

积分
166
 楼主| 发表于 2004-4-3 19:37:00 | 显示全部楼层

Re:我编写的播放声音文件的程序怎么调试不通呢?

谢谢了.通过了,但是为什么书上没有这么说呢?会不会还有其他方法呀?

0

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-4-3 19:48:00 | 显示全部楼层

Re:我编写的播放声音文件的程序怎么调试不通呢?

选菜单的 工程 设置 在弹出的窗口 选LINK页 把WINMM。LIB加到 对象/模块库 里面
试试看

我用的是台湾翻译的创天中文C++6.0
如果版本不对 你自己就找找看吧

21

主题

116

帖子

166

积分

注册会员

Rank: 2

积分
166
 楼主| 发表于 2004-4-3 20:25:00 | 显示全部楼层

Re:我编写的播放声音文件的程序怎么调试不通呢?

在vs2003下怎么设置呀?

19

主题

148

帖子

148

积分

注册会员

Rank: 2

积分
148
QQ
发表于 2004-4-12 17:09:00 | 显示全部楼层

Re:我编写的播放声音文件的程序怎么调试不通呢?

工程名上点右键,选“连接”然后加入
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-30 02:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表