2010-11-14 3 views
0

Je suis en train de développer des programmes OpenGL avec C++ sur Mac en utilisant Netbeans, et il y a des erreurs de compilation:Mac + Netbeans C++ problème OpenGL

"/ usr/bin/make" -f nbproject/Makefile-Release .mk QMAKE = SUBPROJETS = .build-conf "/ usr/bin/make" -f nbprojet/Makefile-Release.mk dist/Version/GNU-MacOSX/sdl_test mkdir -p construction/Release/GNU-MacOSX rm -f construction/Release/GNU-MacOSX/main.od g ++ -c -O2 -MMD -MP -MF compiler/Release/GNU-MacOSX/main.od -o construction/Release/GNU-MacOSX/main.o main .cpp main.cpp: 9: 41: avertissement: OpenGL.framework/Headers/gl.h: Aucun fichier ou répertoire

mon code est aussi simple que cela:

#include <iostream> 
#include <OpenGL.framework/Headers/gl.h> 

/* 
* 
*/ 
int main(int argc, char** argv) { 
    std::cout << glGetString(GL_VERSION) << std::endl; 

    return 0; 
} 

le compilateur ne peut pas trouver le fichier d'en-tête OpenGL même si je l'ai ajouté le chemin, y compris et le fichier lib dans les paramètres du projet. C'est vraiment déroutant ..

Répondre

4

Dans les propriétés de votre projet, allez à C++ Compiler. Sous Include Directories ajoutez /System/Library/Frameworks. Sous Linker au bas sous Additional Options ajouter -framework OpenGL.

Modifier votre include pour #include <OpenGL/gl.h>

Maintenant, vous devriez être en mesure de compiler votre programme. Mais il me semble manquer quelque chose, parce que je reçois une erreur de segmentation, quand je l'appelle glGetString ...

#include <iostream> 
#include <OpenGL/gl.h> 

int main(int argc, char** argv) { 
    const GLubyte* version = glGetString(GL_VERSION); // segmentation fault 

    return 0; 
} 
+1

vous manque la création d'un contexte OpenGL, vous ne pouvez pas appeler des fonctions GL sans. –

+0

Hey bjoernz, ça marche enfin! Mais j'ai plusieurs questions ici: 1. Je peux comprendre ajouter "/ System/Library/Frameworks" à "Inclure le répertoire", mais pourquoi puis-je inclure directement "" alors? Le nom du chemin doit être "OpenGL.framework/headers/gl.h". 2. Cette méthode ne fournit pas d'indice de fichier lib à l'éditeur de liens, comment l'éditeur de liens peut-il trouver le fichier lib? – Alan

+0

Apple a introduit l'option '-framework', qui transforme' 'dans le bon chemin dans les coulisses. Il fournit également l'éditeur de liens avec les informations nécessaires. Vous pouvez en lire un peu plus sur ce sujet sur http://developer.apple.com/tools/gcc_overview.html – bjoernz

0

Votre compilateur ne peut pas trouver le fichier d'en-tête référencé dans son chemin de recherche. Essayez de trouver le fichier manuellement sur votre disque dur, puis assurez-vous que votre compilateur a cet emplacement dans son chemin de recherche.