2012-05-10 3 views
7

का उपयोग कर विंडोज़ पर GLEW 1.7.0 बिल्डिंग से पहले यह बहुत पहले पूछा गया है: मैं मिनीजीडब्ल्यू के साथ विंडोज पर GLEW 1.7.0 स्रोत कैसे संकलित करूं? लक्ष्य सी ++ प्रोजेक्ट से लाइब्रेरी के खिलाफ गतिशील रूप से लिंक करने का लक्ष्य है।मिनीगब्लू

अधिक जानकारी: मैं QtCreator के साथ काम कर रहा हूं, निर्माण के लिए ergo उपयोग qmake। मैं विंडोज 7 पर हूं। अब तक मैंने निम्नलिखित लिंक देखे हैं/देखे हैं।

use posted batch file also tried to replace gcc with g++

static with vc++ libs, build dll.a reuse vc++ .dll

Get MSYS run shipped makefile

Info on initial issues

simple stuff using GLEW msvc++ binaries, works on my desktop

Unfortuantely सभी तैनात समाधान मेरे लिए निम्न त्रुटि संदेश में खत्म हो, जब मैं में संकलित परिणाम का उपयोग मेरी प्रोजे टी:

undefined reference to `[email protected]' 
debug/Ex04.o: In function `Z6initGLv': 
undefined reference to `[email protected]' 
undefined reference to `[email protected]' 
debug/Ex04.o: In function `Z8updateGLv': 
undefined reference to `[email protected]' 
undefined reference to `[email protected]' 
collect2: ld returned 1 exit status 
mingw32-make.exe[1]: *** [debug/ecg4.exe] Error 1 
mingw32-make.exe: *** [debug] Error 2 

मैं इस मुद्दे के बारे में अपने wits के अंत में हूं। मैंने qmake में LIBS पथ को डबल और ट्रिपल चेक किया है और विंडोज पथ चर वैरिएबल को शामिल करने के लिए जहां glew dll लाइव है। इसके अलावा qmake का INCLUDEPATH ठीक होना चाहिए। यहाँ वैसे भी .pro फाइल में पथ:

LIBS += -L$$quote(C:/mypath/freeglut/lib/) -lfreeglut 
LIBS += -L$$quote(C:/mypath/glew-1.7.0/lib/) -lglew32 -lglew32mx 
#LIBS+= C:/mypath/glew-1.7.0/lib/libglew32.dll.a 
#LIBS+= C:/Programming/glew-1.7.0/lib/libglew32mx.dll.a 

#includepath for project and the required libraries 
INCLUDEPATH += ./include 
INCLUDEPATH += "C:/mypath/glew-1.7.0/include" 
INCLUDEPATH += "C:/mypath/freeglut/include" 

तो वहाँ कोई है जो कैसे Glew 1.7.0 स्रोत MinGW साथ संकलित प्राप्त करने के बारे निर्देशों का एक सरल सेट दे सकता है?

उत्तर

12

ठीक है मैंने इसे हल किया।

असल में मैंने GLEW को सही तरीके से संकलित किया, जहां तक ​​मैं देख सकता हूं। मैं अपनी परियोजना में LIBS पथ में -lopengl32 -lglu32 जोड़ने के लिए भूल गया। किसी कारण से मुझे अपने क्यूटी/मिनजीडब्लू/विंडोज सिस्टम पर ऐसा करने की ज़रूरत है। मेरे डेस्कटॉप पर: क्यूटी/वीसी ++/विंडोज़ मुझे ऐसा करने की ज़रूरत नहीं है। क्या किसी के पास इसके लिए स्पष्टीकरण है?

के लिए एक ही समस्या भर में ठोकर किसी को भी: -> देख GLEW homepage

  • से

    1. डाउनलोड स्रोत (.zip) स्रोत संकलित करें, वहाँ अलग अलग तरीकों (प्रारंभिक सवाल में सीएफ लिंक)
      हैं नीचे (पुरानी बैच फ़ाइल अब गिटब पर नहीं है)
    2. निर्देशिका में .dll.a फ़ाइलों को रखें जो qmake
    3. में अपने LIBS पथ का हिस्सा होगा।

      #Required Libraries, replace with your path 
      # $$quote(...) for quoting pathes with spaces 
      
      LIBS += -L$$quote(C:/Programming/freeglut/lib/) -lfreeglut 
      LIBS += -L$$quote(C:/Programming/glew-1.7.0/lib/) -lglew32 -lglew32mx 
      # the following line is not necessary when working with VS compiler, odd 
      LIBS += -lopengl32 -lglu32 
      
      #includepath for project and the required libraries 
      INCLUDEPATH += ./include 
      INCLUDEPATH += "C:/Programming/glew-1.7.0/include" 
      INCLUDEPATH += "C:/Programming/freeglut/include" 
      
      : एक निर्देशिका जो systemvariable पथ का हिस्सा है में dll फ़ाइलों
    4. मत भूलना अपने qmake प्रोजेक्ट फाइल

    यहाँ में ओपन, glu, Glew के साथ लिंक करने के लिए अपने प्रोजेक्ट फ़ाइल का एक टुकड़ा है

    फिर भी धन्यवाद बहुत है, शायद यह कुछ लोगों को मदद मिलती है निर्भरता :)

    चीयर्स के बारे में भूल नहीं करने के लिए मोरित्ज़


    संपादित करें: बैच फ़ाइल ऊपर किसी भी अधिक नहीं है और मैं सिर्फ Glew 1.9.0 संकलित करने के लिए किया था। तो यहां कुछ और नोट्स दिए गए हैं:

    1. सुनिश्चित करें कि ar.exe और gcc.exe आपके पथ पर हैं। "क्यूटीएसडीके मानक स्थापित" के लिए उन कार्यक्रमों को सी: \ QtSDK \ mingw \ bin पर पाया जा सकता है;
    2. निम्न पंक्तियों को glew-1.x.y फ़ोल्डर में बैच फ़ाइल में रखें। यह LightningIsMyName's Answer

      gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.o -c src/glew.c 
      gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32 
      ar cr lib/libglew32.a src/glew.o 
      
      gcc -DGLEW_NO_GLU -DGLEW_MX -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.mx.o -c src/glew.c 
      gcc -shared -Wl,-soname,libglew32mx.dll -Wl,--out-implib,lib/libglew32mx.dll.a -o lib/glew32mx.dll src/glew.mx.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32 
      ar cr lib/libglew32mx.a src/glew.mx.o 
      
    3. भागो बैच फ़ाइल का एक संक्षिप्त संस्करण है। परिणाम lib/फ़ोल्डर में होंगे। परिणाम .dll और .dll.a फ़ाइलें एक साथ चलती हैं (.dll.a वह है जिसे आप अपने लिंकर को बताना चाहते हैं, .dll रनटाइम पर सिस्टम के लिए उपलब्ध होना चाहिए)। एए फाइल स्थिर लिंकिंग के लिए हैं।

  • +1

    संकेत के लिए धन्यवाद, मैंने जवाब पर विस्तार किया और इसे स्वीकार कर लिया। –

    +0

    मैंने एक टूटी हुई लिंक को हटाने और खोई गई जानकारी को बदलने के लिए उत्तर संपादित किया। उम्मीद है कि अब यह बहुत अव्यवस्थित नहीं है। –