LINUX.ORG.RU

Программы на SDL не запускаются!

 , ,


0

1

Привет, ЛОР! Программы на SDL не запускаются! Запускал даже программы из различных примеров. Компиляция происходит нормально, а при запуске окна не видно, только пустой терминал (терминал виден только при отладки в Geany)!

Простейший код:

#include <SDL/SDL.h>
int main( int argc, char** argv )
{
   SDL_Init( SDL_INIT_EVERYTHING );
   SDL_Quit();
   return 0;
}

Команда Geany: g++ -Wall -o «%e» «%f» -lSDL

Устанавливал:

# apt-get install libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev



Последнее исправление: Human-source (всего исправлений: 1)

Смотри простейшие примеры, которые идут в комлекте SDL. Ты ведь даже видео режим не инициализируешь, а сразу делаешь SDL_Quit() и return 0.

Dead ★★★★
()

Как запустилось так и через 0.000...1 секунду и завершилось.

#include <stdlib.h>
#include "SDL/SDL.h"

int main(void)
{  
    SDL_Surface* screen = NULL;
    //Start SDL
    SDL_Init( SDL_INIT_EVERYTHING );
    screen = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE );
    sleep(3);
    //Quit SDL
    SDL_Quit();
    
    return 0;    
}
blogdron
()

Я тут подумал, что с нынешними сенсационными новостями на глагне лора (Убунту-рендер-фон получил рекордный ошеломительный впечатляющий огромный взнос пыщьпыщь), у этого треда заголовок очень подходит, чтобы JB это туда тоже поместил.

cdshines ★★★★★
()
Ответ на: комментарий от Dead

Я и другие пробовал, и свои тоже, писал же!

#include <SDL/SDL.h>


SDL_Surface* screen;





int main(int argc, char **argv) {
	SDL_Init(SDL_INIT_EVERYTHING);
	
	
	screen = SDL_SetVideoMode(W_width, W_height, W_bits, SDL_SWSURFACE);
	
	
	while(running) {
		SDL_Event event;
		while(SDL_PollEvent(&event)) {
			switch(event.type) {
				case SDL_QUIT:
					running = false;
			}
		}
		
		
		SDL_Flip(screen);
	}
	
	
	
	SDL_Quit();
	
	return 0;
}

Human-source
() автор топика
Ответ на: комментарий от Human-source

Поменял в вашем исходнике screen = SDL_SetVideoMode(W_width, W_height, W_bits, SDL_SWSURFACE); на screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);

и добавил объявление bool running. Собрал g++ test.cpp -lSDL.

окошко появилось.

Дистрибутив OpenSUSE 12.2.

Dead ★★★★
()
Ответ на: комментарий от Dead

Все переменные в другом файле, я заменил include на SDL_Surface* screen, забыв про них:

#define W_width 640
#define W_height 480
#define W_bits 32




SDL_Surface* screen = NULL;


bool running = true;

Human-source
() автор топика
Ответ на: комментарий от blogdron

Ничего, он пустой, только информацию (в отладке), что программа вернула 0.

Human-source
() автор топика

Проблема решилась после переустановки ОС. Вчера была Mint, но она умерла из-за официальных драйверов для видеокарты, хоть они и от AMD и для Ubuntu, а Mint основан на Ununtu, полетели иксы. Ночью закончил переустанвку на Ubuntu, дрова пошли, но обнаружил, что это из-за них (аналогичная проблема была на другом форуме, нашёл на 4-ой страице гугла!), сейчас всё работает.

Придётся остаться на дровах, которые поставила убунта, а они не очень то и производительны :(

Human-source
() автор топика
Ответ на: комментарий от Dead

Кстати, если running по умолчанию будет false, то окошко действительно не появляется.

Странно, да? :)

andreyu ★★★★★
()
Ответ на: комментарий от Human-source

Какая разница, правильный он или нет, если он не работал?

buddhist ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.