On Friday, 26 August 2016 at 21:26:13 UTC, unDEFER wrote:
Hello!

I'm trying compile SDL "Hello, World"

---
import std.stdio;
import derelict.sdl2.sdl;

//Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

int main()
{
    DerelictSDL2.load();

        //The window we'll be rendering to
        SDL_Window* window = null;
        
        //The surface contained by the window
        SDL_Surface* screenSurface = null;

        //Initialize SDL
        if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
        {
printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() );
        }
        else
        {
                //Create window
window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
                if( window == null )
                {
printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
                }
                else
                {
                        //Get window surface
                        screenSurface = SDL_GetWindowSurface( window );

                        //Fill the surface white
SDL_FillRect( screenSurface, null, SDL_MapRGB( screenSurface.format, 0xFF, 0x00, 0x00 ) );
                        
                        //Update the surface
                        SDL_UpdateWindowSurface( window );

            //Wait two seconds
                        SDL_Delay( 2000 );
                }
        }

        //Destroy window
        SDL_DestroyWindow( window );

        //Quit SDL subsystems
        SDL_Quit();

        return 0;
}
---

$ dmd -I/path/to/DerelictSDL2/source -I/path/to/derelict-util-2.0.6/source main.d /path/to/DerelictSDL2/lib/libDerelictSDL2.a /path/to/derelict-util-2.0.6/lib/libDerelictUtil.a -gc

It compiles but on running crashes (as shows valgrind) in SDL_FillRect function.

BUT in gdb it runs successfully and I see red window.
What I'm doing wrong? How gdb can make not working code working?

dmd 2.071.1

Thank you!

I tried your code in Arch x86_64 using dub and it worked for me. This is the dub file I used:

---
name "testsdl"
targetType "executable"
dependency "derelict-sdl2" version=">=2.0.0"
dependency "derelict-util" version=">=2.0.6"
dependency "derelict-gl3" version=">=1.0.18"
---

If you're not familiar with dub and want to test these are the steps I took.
0. Get dub [1]
1. mkdir -p testsdl/source
2. Copy your source code from OP into a file "testsdl/source/app.d"
3. Copy the above dub config into a file "testsdl/dub.sdl"
4. cd testsdl; dub build

It should pull in the dependencies and build a program called "testsdl".

bye,
lobo

[1] https://code.dlang.org/download


Reply via email to