如何在CoDeBlocks中使用sdl2

时间:2013-10-04 17:13:41

标签: codeblocks sdl-2

我很难用Code :: Blocks设置SDL2 我尝试了在谷歌上找到的一些教程,我试图通过在这个网站上搜索来解决问题,但我没有解决它,每次我在编译一个简单的程序时遇到错误 所以我希望有人能够给我一个简单的一步一步的指导来帮助我 首先让我知道code :: blocks和sdl 2是否一起工作?

然后我不得不说,我正在使用惠普便携式Windows 7 - 64 BITS 我在Code :: Blocks 12.11上安装了嵌入式Mingw32 4.7.1 我想我将libs和包含文件正确地链接到我的设置上,但仍然没有工作,我即将放弃

1 个答案:

答案 0 :(得分:3)

  1. 下载SDL2-devel-2.0.1-mingw.tar.gz
  2. 从SDL2-2.0.1 \ i686-w64-mingw32解压缩这些目录:\ bin,\ include,\ lib和\ share到例如X:\码块\ MinGW的\
  3. 创建目录%APPDATA%\ CodeBlocks \ UserTemplates \ SDL2并粘贴文件SDL2.cbp,main.cpp和cb.bmp
  4. SDL2.cbp:

    注意:根据需要编辑驱动器的字母和路径X:\ CodeBlocks

    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <CodeBlocks_project_file>
            <FileVersion major="1" minor="6" />
            <Project>
                    <Option title="SDL2" />
                    <Option pch_mode="2" />
                    <Option compiler="gcc" />
                    <Build>
                            <Target title="Debug">
                                    <Option output="bin/Debug/SDL2" prefix_auto="1" extension_auto="1" />
                                    <Option object_output="obj/Debug/" />
                                    <Option type="1" />
                                    <Option compiler="gcc" />
                                    <Compiler>
                                            <Add option="-g" />
                                    </Compiler>
                            </Target>
                            <Target title="Release">
                                    <Option output="bin/Release/SDL2" prefix_auto="1" extension_auto="1" />
                                    <Option object_output="obj/Release/" />
                                    <Option type="0" />
                                    <Option compiler="gcc" />
                                    <Compiler>
                                            <Add option="-O2" />
                                    </Compiler>
                                    <Linker>
                                            <Add option="-s" />
                                    </Linker>
                            </Target>
                    </Build>
                    <Compiler>
                            <Add option="-Wall" />
                            <Add directory="X:/CodeBlocks/MinGW/include" />
                    </Compiler>
                    <Linker>
                            <Add library="mingw32" />
                            <Add library="SDL2main" />
                            <Add library="SDL2.dll" />
                            <Add library="user32" />
                            <Add library="gdi32" />
                            <Add library="winmm" />
                            <Add library="dxguid" />
                            <Add directory="X:/CodeBlocks/MinGW/lib" />
                    </Linker>
                    <Unit filename="cb.bmp" />
                    <Unit filename="main.cpp" />
                    <Extensions>
                            <code_completion />
                            <envvars />
                            <debugger />
                            <lib_finder disable_auto="1" />
                    </Extensions>
            </Project>
    </CodeBlocks_project_file>
    

    的main.cpp

    #include <iostream>
    #include <SDL2/SDL.h>
    
    int main ( int argc, char** argv )
    {
    // initialize SDL video
        if (SDL_Init(SDL_INIT_VIDEO) == -1)
        {
            std::cout << "Unable to init SDL video: "<< SDL_GetError() << std::endl;
            return 1;
        }
    // make sure SDL cleans up before exit
        atexit(SDL_Quit);
    
    // create a new window
        SDL_Window* screen = NULL;
        screen = SDL_CreateWindow("CodeBlocs Logo Window",
                              SDL_WINDOWPOS_CENTERED,
                              SDL_WINDOWPOS_CENTERED,
                              150,120,
                              /* SDL_WINDOW_FULLSCREEN | */
                              SDL_WINDOW_OPENGL);
        if ( NULL == screen )
        {
            std::cout << "Unable to create window: "<< SDL_GetError() << std::endl;
            return 1;
        }
    
    // Create a new renderer
        SDL_Renderer* renderer = NULL;
        renderer = SDL_CreateRenderer(screen, -1, 0);
    
        if ( NULL == renderer )
        {
            std::cout << "Unable to create renderer: "<< SDL_GetError() << std::endl;
            return 1;
        }
    
    // load an image
        SDL_Surface* bitmap = NULL;
        bitmap = SDL_LoadBMP("cb.bmp");
    
        if ( NULL == bitmap )
        {
            std::cout << "Unable to load bitmap: "<< SDL_GetError() << std::endl;
            return 1;
        }
    
        SDL_Texture* texture = NULL;
        texture = SDL_CreateTextureFromSurface(renderer, bitmap);
        SDL_FreeSurface(bitmap);
    
        // program main loop
        bool done = false;
        while (!done)
        {
        // drawing
        SDL_RenderClear(renderer);
        SDL_RenderCopy(renderer, texture, NULL, NULL);
        SDL_RenderPresent(renderer);
    
            // message processing loop
            SDL_Event event;
            while (SDL_PollEvent(&event))
            {
                // check for messages
                switch (event.type)
                {
                // exit if the window is closed
                case SDL_QUIT:
                    done = true;
                    break;
    
                // check for keypresses
                case SDL_KEYDOWN:
                    {
                        // exit if ESCAPE is pressed
                        if (event.key.keysym.sym == SDLK_ESCAPE)
                            done = true;
                        break;
                    }
                } // end switch
            } // end of message processing
        } // end main loop
    
        SDL_DestroyTexture(texture);
        SDL_DestroyRenderer(renderer);
        SDL_DestroyWindow(screen);
    
        SDL_Quit();
        return 0;
    }
    

    cb.bmp任何位图文件150x120

    运行CodeBlocks和File-&gt; New-&gt;来自模板...-&gt;用户模板 - &gt; SDL2