使用SDL2代码运行Valgrind时出错

时间:2015-12-19 14:35:12

标签: c ubuntu-14.04 sdl-2 video-card

我开始学习SDL,我正在关注互联网上的一些教程。 我写了一个简单的代码,在屏幕上显示窗口2秒钟:

#include <SDL2/SDL.h>
#include <stdio.h>

#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480

int main(void)
{
    SDL_Window* window = NULL;
    SDL_Surface* screenSurface = NULL;

    if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
    {
        printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() );
    }
    else
    {
        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
        {
            screenSurface = SDL_GetWindowSurface( window );
            SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0xFF, 0xFF, 0xFF ) );
            SDL_UpdateWindowSurface( window );
            SDL_Delay( 2000 );
        }
    }

    SDL_DestroyWindow( window );
    SDL_Quit();

    return 0;
}

当我运行它时,效果很好。但是,如果我使用Valgrind运行它,则会显示许多无效的读取和其他错误。要查看错误,请参阅here

所有这些似乎都与fglrx_dri.so有关。

长篇故事是: 我最近买了戴着Ubuntu 14.04和AMD显卡的戴尔笔记本电脑。我无法安装它。我尝试了很多方法来安装它但失败了。因此,当我在终端lspci | grep VGA上输入时显示:

00:02.0 VGA compatible controller: Intel Corporation Broadwell-U Integrated Graphics (rev 09)

所以我正在使用我的集成显卡。 (而不是我的AMD图形显卡)

当我在终端fglrxinfo上输入时:

display: :0  screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon R7 M260
OpenGL version string: 4.4.13374 Compatibility Profile Context 15.20.1013

根据第3节中的this,我的AMD图形视频卡已安装并正常运行。 (但事实并非如此)。

所以,回到我的SDL问题,当我运行我的第一个SDL程序时, 显示错误libGL error: dlopen /usr/lib/fglrx/dri/i965_dri.so failed (/usr/lib/fglrx/dri/i965_dri.so: cannot open shared object file: No such file or directory)。我打开this问题,但我无法解决。所以我将文件i965_dri.so复制到目录/usr/lib/fglrx/dri/。这会使此错误消失。

所以,任何人都知道为什么会这样?我真的想让我的图形显卡工作。但经过多次尝试,我忘记了我的图形显卡,只是想让我的SDL代码正常工作,没有错误或内存泄漏。

谢谢!

0 个答案:

没有答案