Не могу скомпилировать простую SDL программу с Dev-C ++ - PullRequest
1 голос
/ 12 апреля 2020

Непосредственно перед тем, как читать, просто знайте, что я не англичанин sh, так что, надеюсь, я не буду неправильно писать здесь. Тем не мение. Я пытался скомпилировать свою первую программу SDL, поэтому я следовал онлайн-учебникам по установке библиотек SDL2. Код (скопированный с здесь мин. 13: 00 ), который я использовал, таков:

#include <iostream>
#include <SDL2/SDL.h>
using namespace std;

int main(void){

    if(SDL_Init(SDL_INIT_VIDEO) < 0) {
        cout << "SDL init failed.\n";
        return 1;
    }

    cout << "SDL init succeeded";
    SDL_Quit();


    return 0;
} 

Я получаю следующую ошибку:

C:\Users\raffaele.ciotola\Desktop\Marco & Lory\Lorenzo\Dev-Cpp\SDL2-2.0.12\x86_64-w64-mingw32\lib\libSDL2main.a(SDL_windows_main.o) In function `main_getcmdline':
71      s:\rs\valve\release\SDL\SDL2-2.0.12-source\src\main\windows\SDL_windows_main.c  undefined reference to `SDL_main'
C:\Users\raffaele.ciotola\Desktop\Marco & Lory\Lorenzo\Dev-Cpp\Programs\SDL_\collect2.exe   [Error] ld returned 1 exit status
25      C:\Users\raffaele.ciotola\Desktop\Marco & Lory\Lorenzo\Dev-Cpp\Programs\SDL_\Makefile.win   recipe for target 'SDL_.exe' failed

Я попытался запустить свой Dev- Cpp .exe на администраторе, поскольку папка установки находится на рабочем столе, но это не решило проблему.

Makefile (как бы то ни было, я не минимальная идея) это. При необходимости ¯_ (ツ) _ / ¯.

# Project: Progetto3
# Makefile created by Dev-C++ 5.11

CPP      = g++.exe
CC       = gcc.exe
WINDRES  = windres.exe
OBJ      = SDL_.o
LINKOBJ  = SDL_.o
LIBS     = -L"C:/Users/raffaele.ciotola/Desktop/Marco & Lory/Lorenzo/Dev-Cpp/MinGW64/lib" -L"C:/Users/raffaele.ciotola/Desktop/Marco & Lory/Lorenzo/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -L"C:/Users/raffaele.ciotola/Desktop/Marco & Lory/Lorenzo/Dev-Cpp/SDL2-2.0.12/x86_64-w64-mingw32/lib" -static-libgcc -mwindows -lmingw32 -lSDL2main -lSDL2 -lopengl32 -lglu32
INCS     = -I"C:/Users/raffaele.ciotola/Desktop/Marco & Lory/Lorenzo/Dev-Cpp/MinGW64/include" -I"C:/Users/raffaele.ciotola/Desktop/Marco & Lory/Lorenzo/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Users/raffaele.ciotola/Desktop/Marco & Lory/Lorenzo/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include"
CXXINCS  = -I"C:/Users/raffaele.ciotola/Desktop/Marco & Lory/Lorenzo/Dev-Cpp/MinGW64/include" -I"C:/Users/raffaele.ciotola/Desktop/Marco & Lory/Lorenzo/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Users/raffaele.ciotola/Desktop/Marco & Lory/Lorenzo/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"C:/Users/raffaele.ciotola/Desktop/Marco & Lory/Lorenzo/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++" -I"C:/Users/raffaele.ciotola/Desktop/Marco & Lory/Lorenzo/Dev-Cpp/SDL2-2.0.12/x86_64-w64-mingw32/include"
BIN      = SDL_.exe
CXXFLAGS = $(CXXINCS) 
CFLAGS   = $(INCS) 
RM       = rm.exe -f

.PHONY: all all-before all-after clean clean-custom

all: all-before $(BIN) all-after

clean: clean-custom
    ${RM} $(OBJ) $(BIN)

$(BIN): $(OBJ)
    $(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)

SDL_.o: SDL_.cpp
    $(CPP) -c SDL_.cpp -o SDL_.o $(CXXFLAGS)

Если вам нужна какая-либо другая информация, просто спросите. Спасибо.

1 Ответ

2 голосов
/ 12 апреля 2020

SDL захватывает функцию main с помощью собственной начальной настройки. Затем он вызывает все, что вы написали как функцию main. Поскольку она вызывает вашу main функцию, она ожидает, что она будет определена определенным c способом.

Попробуйте, и это должно устранить ошибки, с которыми вы столкнулись:

int main(int argc, char* args[])
{
    // whatever
    return 0;
}
...