Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Problem beim Kompilieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.01.2007, 13:37 Uhr
crypt



Hallo erstmal!

Ich bin Neuling auf dem Gebiet C++ und kämpfe mich grade durch eines der vielen Tutorials (3D-Spiele mit c++ in 21 Tagen). Einige Probleme und Fehlermeldungen konnte ich bereits (mehr oder weniger) selbstständig auflösen, aber die letzten 3 verstehe ich nicht ganz. Ich habe schon einiges darüber recherchiert und gelesen, aber dabei keine brauchbare bzw. verständliche Lösung gefunden. Ich hoffe, hier kann mir jemand weiterhelfen!

Hier der Quellcode:


C++:
//-------------------------------------
// DEFINES
//-------------------------------------

#define WINDOW_CLASS_NAME "Game Shell Window"
#define WIN32_LEAN_AND_MEAN

//-------------------------------------
// INCLUDES
//-------------------------------------

#include <windows.h>

//-------------------------------------
// MACROS
//-------------------------------------

#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code)&0x8000)?1:0)
#define KEYUP(vk_code)   ((GetAsyncKeyState(vk_code)&0x8000)?0:1)

//-------------------------------------
// GLOBALS
//-------------------------------------

HWND      main_window_handle = NULL;
HINSTANCE hinstance_app     = NULL;

//-------------------------------------
// Wichtige GAME-Funktionsprototypen
//-------------------------------------

void Game_Shutdown(void);
void Game_Init(void);
void Game_Main(void);

//-------------------------------------
//Funtionsdefinitionen
//-------------------------------------

LRESULT CALLBACK WindowProc(HWND hwnd,
                            UINT msg,
                            WPARAM wparam,
                            LPARAM lparam)
{
    PAINTSTRUCT ps;
    HDC       hdc;

    // Nachrichtenverarbeitung
    switch(msg)
    {
        case WM_CREATE:
        {
            return(0);
        }
        break;
        
        case WM_PAINT:
        {
            hdc = BeginPaint(hwnd,&ps);
            EndPaint(hwnd,&ps);
            return(0);    
        }
        break;

        case WM_DESTROY:
            {
                PostQuitMessage(0);
                return(0);
            }
            break;

            default:
            break;
    }
    return (DefWindowProc(hwnd, msg, wparam, lparam));
}

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

int WINAPI WinMain(HINSTANCE hinstance,
                   HINSTANCE hprevinstance,
                   LPSTR lpcmdline,
                   int ncmdshow)
{
    WNDCLASSEX winclass;
    HWND       hwnd;
    MSG        msg;

    // Fenstereigenschaften festlegen:
    winclass.cbSize        = sizeof(WNDCLASSEX);
    winclass.style         = CS_HREDRAW | CS_VREDRAW;
    winclass.lpfnWndProc   = WindowProc;
    winclass.cbClsExtra    = 0;
    winclass.cbWndExtra    = 0;
    winclass.hInstance     = hinstance;
    winclass.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    winclass.hCursor       = LoadCursor(NULL, IDC_ARROW);
    winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    winclass.lpszMenuName  = NULL;
    winclass.lpszClassName = WINDOW_CLASS_NAME;
    winclass.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

    hinstance_app = hinstance;

    if(!RegisterClassEx(&winclass))
        return(0);

    if(!(hwnd = CreateWindowEx(NULL,
                               WINDOW_CLASS_NAME,
                               "My Game Shell",
                               WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                               0,0,
                               800,600,
                               NULL,
                               NULL,
                               hinstance,
                               NULL)))                                                                                                
return(0);

main_window_handle = hwnd;

Game_Init();

while(TRUE) // Nachrichtenweiterleitung
{
    if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
    {
        if(msg.message == WM_QUIT)
            break;
        
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    
    Game_Main();
}

Game_Shutdown();

return(msg.wParam);

}

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

void Game_Init(void)
{
    //Mit ESC kann die Anwendung verlassen werden
    if(KEYDOWN(VK_ESCAPE))
        SendMessage(main_window_handle,WM_CLOSE,0,0);
}

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

void Game_Shutdown(void)
{}



--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Beim Kompilieren erhalte ich nun 2 Fehlermeldungen und 1 Warnung:

main.cpp(100) : error C2440: '=': 'const char [18]' kann nicht in 'LPCWSTR' konvertiert werden. Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

main.cpp(117) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [18]' in 'LPCWSTR' nicht möglich. Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

main.cpp(140) : warning C4244: 'return': Konvertierung von 'WPARAM' in 'int', möglicher Datenverlust


Wäre nett, wenn mir damit jemand ebend ein klein wenig behilflich sein könnte und sich das mal anschaut.

Danke schonmal! :>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.01.2007, 13:45 Uhr
crypt



:/ @ Thread unter mir.

OK, hab jetzt von UniCode auf MultiByte geswitcht. Damit hatte ich vorher schon einige Schwierigkeiten, aber ich wusste nicht, dass sich das bei jedem neuen Projekt wieder zurücksetzt. So weit, so gut. Jetzt spuckt er mir aber trotzdem folgende Fehlermeldungen aus:

main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl Game_Main(void)" (?Game_Main@@YAXXZ)" in Funktion "_WinMain@16".

MSVCRTD.lib(crtexe.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_main" in Funktion "___tmainCRTStartup".

GameShell.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise.

Dieser Post wurde am 09.01.2007 um 13:50 Uhr von crypt editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.01.2007, 15:22 Uhr
crypt



Problem gelöst!


*close*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: