Thread: PlaySound unresolved symbol

  1. #1
    Registered User
    Join Date
    Jul 2003
    Posts
    450

    PlaySound unresolved symbol

    Can't seem to get PlaySound to work. I thought I had all the correct includes. I added WINMM.LIB to my project. What is causing these errors?
    Code:
    // Wintest.cpp : Defines the entry point for the application.
    //
    
    #define WIN32_LEAN_AND_MEAN  //simple win32 app no mfc
    
    #include <windows.h>
    #include <windowsx.h>
    #include <mmsystem.h>  // very important and include WINMM.LIB too!
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include "stdafx.h"
    #include "resource.h"
    
    #define WINDOW_CLASS_NAME "WINCLASS1"
    
    HWND      main_window_handle = NULL; // globally track main window
    HINSTANCE hinstance_app      = NULL; // globally track hinstance
    
    //main message handler
    LRESULT CALLBACK WindowProc(HWND hwnd,
    							UINT msg,
    							WPARAM wparam,
    							LPARAM lparam)
    {
    	PAINTSTRUCT ps;  // used in WM_PAINT
    	HDC hdc;         // handle to device context
    
    	// handle message
    	switch(msg)
    	{
    	case WM_CREATE:{
    					PlaySound(MAKEINTRESOURCE(SOUND_ID_INTRO),hInstance_app,
    								SND_ASYNC|SND_RESOURCE);
    
    					return(0);
    				   }
    					break;
    .
    .
    .
    Wintest.cpp
    C:\Documents and Settings\ripspinner\My Documents\VisC++6Source\Wintest\Wintest.cpp(33) : error C2065: 'PlaySound' : undeclared identifier
    C:\Documents and Settings\ripspinner\My Documents\VisC++6Source\Wintest\Wintest.cpp(33) : error C2065: 'hInstance_app' : undeclared identifier
    C:\Documents and Settings\ripspinner\My Documents\VisC++6Source\Wintest\Wintest.cpp(34) : error C2065: 'SND_ASYNC' : undeclared identifier
    C:\Documents and Settings\ripspinner\My Documents\VisC++6Source\Wintest\Wintest.cpp(34) : error C2065: 'SND_RESOURCE' : undeclared identifier
    Error executing cl.exe.

    Wintest.exe - 4 error(s), 0 warning(s)
    Last edited by curlious; 10-04-2003 at 12:17 PM.

  2. #2
    carry on JaWiB's Avatar
    Join Date
    Feb 2003
    Location
    Seattle, WA
    Posts
    1,972
    You need dsound.h and link libdsound.a
    "Think not but that I know these things; or think
    I know them not: not therefore am I short
    Of knowing what I ought."
    -John Milton, Paradise Regained (1671)

    "Work hard and it might happen."
    -XSquared

  3. #3
    Registered User
    Join Date
    May 2003
    Posts
    1,619
    Are you sure it's finding mmsystem.h? It should work as is -- your error is NOT a linker error, but a compiler error. An unresolved symbol is a linker error, an undeclared identifier means the prototype isn't found.
    You ever try a pink golf ball, Wally? Why, the wind shear on a pink ball alone can take the head clean off a 90 pound midget at 300 yards.

  4. #4
    Registered User
    Join Date
    Jul 2003
    Posts
    450
    It had somthing to do with including std.afx I removed that and it compiled.

    Here is another example of code that I am having problems with.
    It compiles, but doesn't play the sound. Also the small Icon in the upper right hand corner of the window doesn't change though the one in the taskbar does. Here is my code and resource files.
    Code:
    #define WIN32_LEAN_AND_MEAN
    
    #include <windows.h>
    #include <windowsx.h>
    #include <mmsystem.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include "resource.h"
    
    
    HWND      main_window_handle = NULL; // globally track main window
    HINSTANCE hInstance_app      = NULL; // globally track hinstance
    
    /*  Declare Windows procedure  */
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "WindowsApp";
    
    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    
    {
        HWND hwnd;               /* This is the handle for our window */
        MSG messages;            /* Here messages to the application are saved */
        WNDCLASSEX wincl;        /* Data structure for the windowclass */
    
        /* The Window structure */
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
        wincl.style = CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;                 /* Catch double-clicks */
        wincl.cbSize = sizeof (WNDCLASSEX);
    
        /* Use default icon and mouse-pointer */
        wincl.hIcon = LoadIcon (NULL, MAKEINTRESOURCE(ICO_ID_SMILE));
        wincl.hIconSm = LoadIcon (NULL,MAKEINTRESOURCE(ICO_ID_SMILE));
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;                 /* No menu */
        wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
        wincl.cbWndExtra = 0;                      /* structure or the window instance */
        /* Use Windows's default color as the background of the window */
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    
    	hInstance_app=hThisInstance;
    
        /* Register the window class, and if it fails quit the program */
        if (!RegisterClassEx (&wincl))
            return 0;
    
        /* The class is registered, let's create the program*/
        hwnd = CreateWindowEx (
               0,                   /* Extended possibilites for variation */
               szClassName,         /* Classname */
               "Windows To The World",       /* Title Text */
               WS_OVERLAPPEDWINDOW|WS_VISIBLE, /* default window */
               CW_USEDEFAULT,       /* Windows decides the position */
               CW_USEDEFAULT,       /* where the window ends up on the screen */
               544,                 /* The programs width */
               375,                 /* and height in pixels */
               HWND_DESKTOP,        /* The window is a child-window to desktop */
               NULL,                /* No menu */
               hThisInstance,       /* Program Instance handler */
               NULL                 /* No Window Creation data */
               );
    
        /* Make the window visible on the screen */
        //ShowWindow (hwnd, nFunsterStil);
    
        /* Run the message loop. It will run until GetMessage() returns 0 */
        while(TRUE)
        {
            if (PeekMessage(&messages,NULL,0,0,PM_REMOVE))
                if (messages.message==WM_QUIT)
                    break;
            /* Translate virtual-key messages into character messages */
                TranslateMessage(&messages);
            /* Send message to WindowProcedure */
                DispatchMessage(&messages);
        }
    
        /* The program return-value is 0 - The value that PostQuitMessage() gave */
        return messages.wParam;
    }
    
    
    /*  This function is called by the Windows function DispatchMessage()  */
    
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        PAINTSTRUCT ps;
        HDC hdc;
        
        switch (message)                  /* handle the messages */
        {
            case WM_CREATE:{
    						PlaySound(MAKEINTRESOURCE(SOUND_ID_INTRO),hInstance_app,SND_RESOURCE|SND_SYNC);
                            return(0);
                            }
                            break;    
            case WM_PAINT:{
                            hdc=BeginPaint(hwnd,&ps);
                            return(0);
                          }
                          break;
                          
            
            case WM_DESTROY:
                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                break;
            default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
    
        return 0;
    }
    resource.rc
    Code:
    SOUND_ID_INTRO WAVE intro.wav
    ICO_ID_SMILE ICON SMILE.ICO
    resource.h
    Code:
    #define SOUND_ID_INTRO 100
    #define ICO_ID_SMILE 200

  5. #5
    Registered User
    Join Date
    Jul 2003
    Posts
    450
    I figured it out.
    Forgot to include "resource.h" in my .rc file

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Compiling sample DarkGDK Program
    By Phyxashun in forum Game Programming
    Replies: 6
    Last Post: 01-27-2009, 03:07 AM
  2. Including lib in a lib
    By bibiteinfo in forum C++ Programming
    Replies: 0
    Last Post: 02-07-2006, 02:28 PM
  3. Stupid compiler errors
    By ChrisEacrett in forum C++ Programming
    Replies: 9
    Last Post: 11-30-2003, 05:44 PM
  4. debug to release modes
    By DavidP in forum Game Programming
    Replies: 5
    Last Post: 03-20-2003, 03:01 PM
  5. Linking error
    By DockyD in forum C++ Programming
    Replies: 10
    Last Post: 01-20-2003, 05:27 AM