Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » SDL Programm

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
01.09.2007, 21:28 Uhr
~Roland Render
Gast


moin

ich bitte alle mods dieses Forums dieses thema solange nicht ins Grafikprogrammierung-Forum zu verschieben, bis ich eine Lösung für mein Problem hab.

ich hab das Hello World Programm von SDL:


C++:
#include "SDL/SDL.h"
#include <string>

//The attributes of the screen
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;

//The surfaces that will be used
SDL_Surface *message = NULL;
SDL_Surface *background = NULL;
SDL_Surface *screen = NULL;

SDL_Surface *load_image( std::string filename )
{
        //Temporary storage for the image that's loaded
        SDL_Surface* loadedImage = NULL;
        
        //The optimized image that will be used
        SDL_Surface* optimizedImage = NULL;
    //Load the image
        loadedImage = SDL_LoadBMP( filename.c_str() );
    //If nothing went wrong in loading the image
        if( loadedImage != NULL )
        {
            //Create an optimized image
            optimizedImage = SDL_DisplayFormat( loadedImage );
            
            //Free the old image
            SDL_FreeSurface( loadedImage );
        }
       //Return the optimized image
        return optimizedImage;
}
void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination )
{
        //Make a temporary rectangle to hold the offsets
        SDL_Rect offset;
        
        //Give the offsets to the rectangle
        offset.x = x;
        offset.y = y;
     //Blit the surface
        SDL_BlitSurface( source, NULL, destination, &offset );
}


int main( int argc, char* args[] )
{
        //Initialize all SDL subsystems
        if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )
        {
            return 1;    
        }
    //Set up the screen
        screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );
    //If there was an error in setting up the screen
        if( screen == NULL )
        {
            return 1;    
        }
       //Set the window caption
        SDL_WM_SetCaption( "Hello World", NULL );
    //Load the images
        message = load_image( "hello_world.bmp" );
        background = load_image( "background.bmp" );
    //Apply the background to the screen
        apply_surface( 0, 0, background, screen );
    //Apply the message to the screen
        apply_surface( 250, 140, message, screen );
     //Update the screen
        if( SDL_Flip( screen ) == -1 )
        {
            return 1;    
        }
     //Wait 2 seconds
        SDL_Delay( 2000 );
      //Free the surfaces
        SDL_FreeSurface( message );
        SDL_FreeSurface( background );
        
        //Quit SDL
        SDL_Quit();
        
        //Return
        return 0;
}



.. wenn ich es in Visual C++ Express kompiliere, kommt genau das was ich will.
Aber wenn ich in den DEBUG-Ordner meines Projektverzeichnis gehe und die Anwendung ausführe, kommt nur ein Fenster mit schwarzem Hintergrund :mad:

kann mir jemand bitte helfen?

Außerdem hab ich noch ein zweites problem: Ich kann es nicht als Release Anwendung verwenden, nur debug :S ich will mein projekt RELEASE machen und dabei STATISCH LINKEN.

Diese Seite hab ich durchgearbeitet:

http://lazyfoo.net/SDL_tutorials/lesson01/windows/msvsnet05e/index.php

Alles was da steht hab ich für Debug gemacht(DEBUG geht ja bei mir, aber ohne "Laufzeitbibliothek = statisch linken" wegen einem Kompilieruungsfehler..)
, RELEASE funzt bei mir nicht, obwohl ich die selben einstellungen von meinem Link vom Tutorial gewählt hab, wie bei DEBUG.

Bitte um hilfe

Liebe Grüße
Roland Render
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.09.2007, 07:29 Uhr
Tommix



Hallo,
ich vermute die Bitmaps stehen im falschen Verzeichnis. Gib probehalber mal den kompletten Pfad an.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.09.2007, 17:26 Uhr
~Roland Render
Gast


Wow, top Support
Funktioniert nun, danke vielmals, Tommix!

Aber nur noch ein Problem hätte ich: wie kann ich statisch Linken + Release benutzen(VC++ Express 2005)? Mit sdl mein ich

Liebe Grüße
Roland Render
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.09.2007, 08:17 Uhr
Tommix



'Morgen,
In Deinem Tutorial steht:

Zitat:

12)In the C/C++ menu under Code Generation, set "Runtime Library" to multi-threaded dll.


Das wird wohl seinen Grund haben.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.09.2007, 10:04 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


mit der express kann man nicht statisch linken, also die mfc/runtime zumindest nicht. wird schließlich nen grund haben warum die die "pro" für ein paar hundert euro verkaufen ...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.09.2007, 16:24 Uhr
~Roland Render
Gast



Zitat von FloSoft:
mit der express kann man nicht statisch linken, also die mfc/runtime zumindest nicht. wird schließlich nen grund haben warum die die "pro" für ein paar hundert euro verkaufen ...


Würde es mit VC++ 6 Professional gehen? Ist zwar veraltet, würde es aber gehen? Würde SDL trodzdem noch funktionieren?

Mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.09.2007, 16:53 Uhr
Tommix



Nein.
Guckst Du hier:
www.libsdl.org/cgi/docwiki.cgi/FAQ_20Compiling_20on_20Microsoft_20Visual_20C_2b_2b

Zitat:

Set the C runtime to "Multi-threaded DLL" in the menu: Project|Settings|C/C++ tab|Code Generation|Runtime Library.

Das hat auch nichts mit der Express-Edition zu tun:
www.libsdl.org/cgi/docwiki.cgi/FAQ_20Windows_20Link_20Errors_20MSVCRT_2eLIB_20or_20LIBC
Man sollte die dynamischen und die statischen Bilbliotheken nicht beide in einem Projekt verwenden, wie hier versucht wird zu erklären:
http://support.microsoft.com/kb/140584

Zitat:

Daher müssen Sie vorsichtig was Sie über versuchen, über ein CRT-boundary zu tun sein, wenn Sie auswählen, CRT-Bibliotheken zu mischen, daran denken zu dass Sie über zwei separate Kopien von dem CRT mit separaten und unterschiedlichen Status verfügen.



Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.09.2007, 17:29 Uhr
~Roland Render
Gast


hi

also soll ich eine headerdatei erstellen:


C++:
// MyReusableStaticSingleThreadReleaseLibrary.h
#if defined(_MT) || defined(_DEBUG)
    #error The /ML compiler switch is required.
#endif

// MyReusableStaticMultithreadReleaseLibrary.h
#if !defined(_MT) || defined(_DLL) || defined(_DEBUG)
    #error The /MT compiler switch is required.
#endif

// MyReusableDynamicLinkReleaseLibrary.h
#if !defined(_MT) || !defined(_DLL) || defined(_DEBUG)
    #error The /MD compiler switch is required.
#endif

// MyReusableStaticSingleThreadDebugLibrary.h
#if defined(_MT) || !defined(_DEBUG)
    #error The /MLd compiler switch is required.
#endif

// MyReusableStaticMultithreadDebugLibrary.h
#if !defined(_MT) || defined(_DLL) || !defined(_DEBUG)
    #error The /MTd compiler switch is required.
#endif

// MyReusableDynamicLinkDebugLibrary.h
#if !defined(_MT) || !defined(_DLL) || !defined(_DEBUG)
    #error The /MDd compiler switch is required.
#endif



und dann in der main cpp datei includen?

wenn nicht, wie mach ich das damit es funktioniert
-> Statisch zu linken(ohne DLL's in den EXE Pfad reintun zu müssen, damit es auf anderen Rechnern funktioniert)

?

Ich wäre sehr dankbar über ein kleine Erklärung, die man als Noob verstehen kann
(in sdl usw bin ich mehr als ein pro ^^ aba in compilersettings nicht)

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: