Необъявленное имя файла SDL и apply_surface не работают

Недавно я углубился в некоторые учебники по SDL, но у меня возникают трудности при компиляции, в частности, с использованием DevC ++ с библиотекой SDL:
http://lazyfoo.net/SDL_tutorials/lesson05/index.php

Я получаю эту конкретную ошибку: `filename ‘undeclared (сначала используйте эту функцию), и она указывает на filename.c_str ()); область кода, а также несколько других, перечисленных в журнале компиляции. Я также хотел бы исследовать, как «apply_surface» также не распознается. Я включил следующие заголовки:

#include <cmath>
#include <string>
#include <vector>
#include <iostream>
#include "SDL/SDL.h"#include "quickcg.h"#include "SDL/SDL_mixer.h"#include "SDL/SDL_image.h"#include "SDL/SDL_ttf.h"
using namespace QuickCG;

Параметры компоновщика включают в себя предложения, основанные на других темах, которые я обнаружил с той же проблемой, похоже, я не одинок, но я еще не нашел решения, которое применимо к моему коду:

-lmingw32
-mwindows
-lSDLmain
-lSDL
-lSDL_mixer
-lSDL_image
-lSDL_ttf
-lstdc++

КОД СНИПЕТТ:

int main(int /*argc*/, char */*argv*/[])
{
{
SDL_Surface* title = NULL;
SDL_Surface* hud = NULL;
SDL_Surface* screen = NULL;
SDL_Surface* loadedImage = NULL;
SDL_Surface* optimizedImage = NULL;

loadedImage = IMG_Load( filename.c_str() );

if (loadedImage != NULL)
{
optimizedImage = SDL_DisplayFormat( loadedImage );
SDL_FreeSurface( loadedImage );
if( optimizedImage != NULL)

и т. д.

СОБЫТИЯ

Compiler: Default compiler
Building Makefile: "D:\Coding\Raycaster\Makefile.win"Executing  make...
make.exe -f "D:\Coding\Raycaster\Makefile.win" all
g++.exe -c raycaster.cpp -o raycaster.o -I"D:/Coding/Dev-Cpp/lib/gcc/mingw32/3.4.2
/include"  -I"D:/Coding/Dev-Cpp/include/c++/3.4.2/backward"  -I"D:/Coding/Dev-Cpp
/include/c++/3.4.2/mingw32"  -I"D:/Coding/Dev-Cpp/include/c++/3.4.2"  -I"D:/Coding
/Dev-Cpp/include"    -fexpensive-optimizations -O3 -mwindows

raycaster.cpp: In function `int SDL_main(int, char**)':
raycaster.cpp:117: error: `filename' undeclared (first use this function)
raycaster.cpp:117: error: (Each undeclared identifier is reported only once for
each function it appears in.)

raycaster.cpp:130: error: invalid conversion from `SDL_Surface*' to `int'
raycaster.cpp:133: error: `apply_surface' undeclared (first use this function)
raycaster.cpp:134: error: `hud' undeclared (first use this function)

make.exe: *** [raycaster.o] Error 1

Execution terminated

Любые предложения и советы приветствуются. Я еще один придурок-новичок на всей C ++-сцене, но это скорее учебный эксперимент, чем все остальное; Я просто хотел бы построить базовый Raycaster, и я застрял, чтобы показать его.

0

Решение

Во-первых: почему вы закомментировали части основной функции int main(int /*argc*/, char */*argv*/[])??? это должно выглядеть так: int main(int argc, char *argv[])

Второе: если вы не объявили filenameпеременная в глобальной области видимости перед главной (что, как показывает ошибка, у вас нет), вам нужно объявить ее и указать для нее значение. Поскольку вы используете .c_str()метод на это filenameдолжно быть str::string, Попробуйте добавить это перед строкой IMG_Load:

std::string filename = "path to your file here";

Если вы хотите узнать, что не так с остальным кодом, вы должны опубликовать его тоже.

0

Другие решения

Других решений пока нет …