Lỗi khi chạy chương trình SDL2


Mọi người cho mình hỏi cách để fix mấy cái lỗi này với ạ.

Không đủ thông tin bạn nha. Nguy cơ là include thiếu header nên không compile được. Mấy cái định danh trên compiler không tìm được. Còn thiếu gì thì phải up code của bạn lên bằng text để người khác dễ giúp bạn. :slight_smile:

mình copy code từ codelearn ạ:

#include<windows.h>
#include<string>
#include<SDL_image.h>
#include<SDL.h>

#undef main

//hàm nhận tên của ảnh, đọc ảnh và trả về kiểu SDL_Surface
SDL_Surface* LoadImage(std::string file_path)
{
	SDL_Surface* load_image = NULL;
	SDL_Surface* optimize_image = NULL;

	//lưu ý: vị trí lưu ảnh phải cùng với vị trí lưu chương trình chính của các bạn để hàm IMG_Load đọc được ảnh
	load_image = IMG_Load(file_path.c_str());
	if (load_image != NULL)
	{
		//hàm định dạng hiển thị tối ưu hóa kiểu dữ liệu cho phù hợp
		optimize_image = SDL_DisplayFormat(load_image);
		//dữ liệu đã được đưa vào optimize_image nên load_image không cần nữa, ta giải phóng load_image
		SDL_FreeSurface(load_image);
	}
	return optimize_image;
}

int main(int arc, char* argv[])
{
	SDL_Surface* screen;
	SDL_Surface* image;

	if (SDL_Init(SDL_INIT_EVERYTHING) == -1)   //khởi tạo màn hình SDL
		return 1;

	screen = SDL_SetVideoMode(1000, 625, 32, SDL_SWSURFACE); //định dạng màn hình
	image = LoadImage("bk_2dgame.jpg");

	SDL_BlitSurface(image, NULL, screen, NULL); //tải ảnh vào screen

	SDL_Flip(screen);  //hiển thị ảnh lên màn hình
	SDL_Delay(10000);  //dừng 10s trước khi đóng chương trình
	SDL_FreeSurface(image); //giải phóng dữ liệu vì image đã được tải vào screen
	SDL_Quit();  //thoát khỏi SDL

	return 0;
}

Oke. Vậy bạn search google xem mấy cái định danh bị tô đỏ nằm trong header nào.


Mình đọc trên mạng thì thấy thế này

:slight_smile: Rồi nó liên quan gì đến mấy dòng code đỏ bạn? Cái định danh trong hình có liên quan gì đâu. Nên học kĩ căn bản C++ , trước khi đụng đến đồ họa kiểu low-level kiểu này. Nếu không không đi xa được đâu bạn


Trên trang chính thống của SDL2 nó bảo là thay thế rồi thì phải anh ạ, em mới năm nhất học môn lập trình nâng cao có bài tập code game nên mới tìm hiểu mong anh thông cảm.

code kia là của sdl1 sao lại đi xài cho sdl2 được :hocho:

4 Likes

Em mới phát hiện ra ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?