• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

GLFW - Aplikacja nie kompiluje ale nie włącza

VPS Starter Arubacloud
0 głosów
96 wizyt
pytanie zadane 21 czerwca 2020 w C i C++ przez Wiktor Panecki Użytkownik (920 p.)

Dzień dobry, postanowiłem pouczyć się GLFW - robiłem wszystko według kursu i kiedy chciałem skompilować kod, nie działa ( mam tak samo jak On ) - na chińskim blogu znalazłem jak to rozwiązać (#ifndef __APPLE__ i #endif), ale teraz program mi się kompiluje lecz nie działa / odrazu nie kończy. Próbowałem kody przykładowe. Kiedy zmniejszę dyrektywę wtedy mam błąd funkcji w main'ie, a gdy ją powiększę to mam błąd main'a - np. "Undefined symbols for architecture x86_64:   "_glfwCreateWindow", referenced from:       _main in main.o" itd.

#include <GLFW/glfw3.h> //Biblioteka

#include <iostream>

constexpr int WIN_X = 1280, WIN_Y = 720; //Rozmiary

int main(int argc, const char * argv[]) {
    
    #ifndef __APPLE__
    
    glfwInit(); //Inicjowanie biblioteki
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // Ustawianie wersji
    
    GLFWwindow* window = glfwCreateWindow(WIN_X, WIN_Y, "OpenGL", nullptr, nullptr); //Preferecje okna - Szerokość, nazwa i coś tam jeszcze
    if(!window) //Jeżeli nie powiodło się stworxzenie okna
        std::cout << "Nie powiodło się";
        return 1;
    
    glfwMakeContextCurrent(window); //przypisujemy kontekst do wątku okna
    
    while (!glfwWindowShouldClose(window)) { //Główna pętla - tu będzie mechanika gry
        
        if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS){
            glfwSetWindowShouldClose(window, 1);
        }
        
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    
    glfwTerminate(); //"Zabijanie" okna
    
    return 0;
    
    #endif
    
}

 

komentarz 21 czerwca 2020 przez j23 Mędrzec (194,920 p.)

(...) znalazłem jak to rozwiązać (#ifndef __APPLE__ i #endif), ale teraz program mi się kompiluje lecz nie działa / odrazu nie kończy.

Pewnie makro __APPLE__ jest zdefiniowane, a to oznacza, że wnętrze main w trakcie kompilacji jest puste. I dlatego "od razu się kończy". Biblioteka OpenGL jest multiplatformowa i tak długo jak nie będziesz używał funkcji specyficznych dla danego systemu, nie musisz używać kompilacji warunkowej.

Problemem jest - co też dostałeś w odpowiedzi - niezgodność bitowa biblioteki i twojej aplikacji.

 

1 odpowiedź

0 głosów
odpowiedź 21 czerwca 2020 przez Flint Początkujący (280 p.)

Jesteś pewien, że twoja karta wspiera OpenGL w wersii 4.5? W ogóle nie sprawdzasz czy glfw zostało poprawnie zaincjalizowane 

if (!glfwInit())
{
    // Initialization failed
}

Inną sprawą jest czy używasz odpowiednich binarek 32/64 bit w swoim buildzie?

 

Podobne pytania

0 głosów
0 odpowiedzi 99 wizyt
pytanie zadane 11 kwietnia 2021 w C i C++ przez Puxfam Nowicjusz (170 p.)
0 głosów
0 odpowiedzi 99 wizyt
pytanie zadane 5 kwietnia 2021 w C# przez koleś34 Gaduła (3,270 p.)
0 głosów
0 odpowiedzi 153 wizyt
pytanie zadane 17 marca 2021 w C# przez oscarzasty Nowicjusz (220 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...