2014-04-19 12 views
8

में लिनक्स में ओपन (GLFW) सी में आसान स्रोत ++ और संकलन नहीं कर सकते मैं ओपन (glfw) जानने के लिए शुरू कर दिया और मैं एक ट्यूटोरियल से स्रोत को कॉपी करें और संकलित करने के लिए कोशिश की, लेकिन त्रुटियां हुईं। मुझे लगता है मैं corectly सभी हेडर फाइल (GLM, glfw आदि)NetBeans

यह मेरा स्रोत है (मैं इन पात्रों का उपयोग नहीं किया: हेडर फाइल में <,>): स्थापित किया है

#include iostream 
#include stdio.h 
#include stdlib.h 
#include GL/glew.h 
#include GLFW/glfw3.h 
#include glm/glm.hpp 

#define GLFW_INCLUDE_GL_3 

using namespace glm; 
using namespace std; 

int main(){ 
    if(!glfwInit()){ 
     return -1; 
    } 

    GLFWwindow* window; // (In the accompanying source code, this variable is global) 
    window = glfwCreateWindow(1024, 768, "Tutorial 01", NULL, NULL); 
    if(window == NULL) { 
     fprintf(stderr, "Failed to open GLFW window. If you have an Intel GPU, they are not 3.3 compatible. Try the 2.1 version of the tutorials.\n"); 
     glfwTerminate(); 
     return -1; 
    } 

    glfwMakeContextCurrent(window); 

    // Initialize GLEW 
    glewExperimental=true; // Needed in core profile 
    if (glewInit() != GLEW_OK) { 
     fprintf(stderr, "Failed to initialize GLEW\n"); 
     return -1; 
    } 

    return 0; 
} 

और इस नेटबीन में आउटपुट है:

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf 
make[1]: Entering directory `/home/jan/NetBeansProjects/a' 
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/a 
make[2]: Entering directory `/home/jan/NetBeansProjects/a' 
mkdir -p dist/Debug/GNU-Linux-x86 
g++ -o dist/Debug/GNU-Linux-x86/a build/Debug/GNU-Linux-x86/main.o 
build/Debug/GNU-Linux-x86/main.o: In function `main': 
/home/jan/NetBeansProjects/a/main.cpp:12: undefined reference to `glfwInit' 
/home/jan/NetBeansProjects/a/main.cpp:16: undefined reference to `glfwCreateWindow' 
/home/jan/NetBeansProjects/a/main.cpp:19: undefined reference to `glfwTerminate' 
/home/jan/NetBeansProjects/a/main.cpp:22: undefined reference to `glfwMakeContextCurrent' 
/home/jan/NetBeansProjects/a/main.cpp:25: undefined reference to `glewExperimental' 
/home/jan/NetBeansProjects/a/main.cpp:26: undefined reference to `glewInit' 
collect2: error: ld returned 1 exit status 
make[2]: *** [dist/Debug/GNU-Linux-x86/a] Error 1 
make[2]: Leaving directory `/home/jan/NetBeansProjects/a' 
make[1]: *** [.build-conf] Error 2 
make[1]: Leaving directory `/home/jan/NetBeansProjects/a' 
make: *** [.build-impl] Error 2 

BUILD FAILED (exit value 2, total time: 462ms) 

कृपया मेरी मदद करें। आपके समय के लिए शुक्रिया।

+0

आप इसे से लिंक हो रहा नहीं कर रहे हैं:

मैं लिंकर के लिए ये पैरामीटर जोड़ा? – lpapp

+0

ऊपर सूचीबद्ध "अपरिभाषित संदर्भ" आइटम पर ध्यान दें। उनको हल करने की जरूरत है। – STLDeveloper

+0

मैं कैसे हल कर सकता हूं? –

उत्तर

10

सबसे पहली बात:

यह मेरा स्रोत है (: <,> हेडर फाइल में। मैं इस वर्ण का उपयोग नहीं किया):

यह गलत है, और आप ऐसा करना चाहिए। आपके वर्तमान में बयान गलत हैं, और मैं वास्तव में आश्चर्यचकित हूं कि इस तरह संकलन प्रक्रिया को कैसे पारित किया गया।

आप यहाँ में लिंकर त्रुटि मिल रही हो:

/home/jan/NetBeansProjects/a/main.cpp:12: undefined reference to `glfwInit' 
/home/jan/NetBeansProjects/a/main.cpp:16: undefined reference to `glfwCreateWindow' 
/home/jan/NetBeansProjects/a/main.cpp:19: undefined reference to `glfwTerminate' 
/home/jan/NetBeansProjects/a/main.cpp:22: undefined reference to `glfwMakeContextCurrent' 
/home/jan/NetBeansProjects/a/main.cpp:25: undefined reference to `glewExperimental' 
/home/jan/NetBeansProjects/a/main.cpp:26: undefined reference to `glewInit' 

वहाँ विफलता के लिए निम्नलिखित विकल्पों के हो सकता है:

  • आप पुस्तकालय से लिंक हो रहा नहीं कर रहे हैं (सबसे अधिक संभावना)

  • आप पुस्तकालय स्थापित (संभावना नहीं, अपने विवरण के आधार पर)

  • होने नहीं कर रहे हैं
  • आप पुस्तकालय (फिर से, संभावना नहीं) में मौजूद नहीं प्रतीकों का उपयोग कर रहे

सबसे शायद यही कारण है कि आप पुस्तकालय से लिंक हो रहा नहीं कर रहे हैं, अंत में है। आप इस लिंकर के लिए स्थापित होना चाहिए:

-lglfw3 

ध्यान दें कि आप भी श्रृंखला है कि एक निर्भरता के रूप में आता है जब आप इन जोड़ना शुरू है, तो अपनी टिप्पणी के आधार पर में सब कुछ जोड़ने की आवश्यकता होगी इस पूरे है श्रृंखला को जोड़ने के लिए:

-L/usr/local/lib -lglfw3 -pthread -lGLEW -lGLU -lGL -lrt -lXrandr -lXxf86vm -lXi -lXinerama -lX11 

जब से तुम NetBeans आईडीई उपयोग कर रहे हैं, तो आप इस परियोजना सेटिंग पर जाना यह सेट अप करने के लिए जब तक आप स्वयं पृष्ठभूमि में फ़ाइलों को संपादित की आवश्यकता होगी। यहां, आप एक स्क्रीनशॉट देख सकते हैं जो दर्शाता है कि आपके पास एक लिंकर टैब है जहां आप इसे ठीक से सेट कर सकते हैं।

enter image description here

+0

मैंने लिंकर को पैरामीटर जोड़ा लेकिन त्रुटियां फिर से हुईं लेकिन पहले से कम थीं। https://docs.google.com/file/d/0B_1o37MpTnYUTUY0SXhjSDQ4SE0/edit –

+0

क्या आप कोड :: ब्लॉक पर समतुल्य प्रक्रिया जानते हैं? – 0x499602D2

+0

शायद थोड़ा सा –

1

मैं इसे हल:

-L/usr/local/lib -lglfw3 -pthread -lGLEW -lGLU -lGL -lrt -lXrandr -lXxf86vm -lXi -lXinerama -lX11 
+2

उत्तर देने के लिए कोई आवश्यकता नहीं है, जब कोई पहले से ही है । साथ ही, कृपया http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work के अनुसार एक उत्तर का चयन करें – lpapp