समस्या शीर्षक में है, मैं सूची क्या मैं पहले से ही की कोशिश की है और इतने पर नीचे की कोशिश करेंगे का उपयोग कर कार्यक्रम।संकलन सरल स्थिर ओपन 4.0 MinGW, freeglut और Glew
सबसे पहले, मेरी समझ में, क्रम में खिड़कियों पर ओपन 4.0 का उपयोग करने के आप का विस्तार करने और या डिफ़ॉल्ट खिड़कियों पुस्तकालय बाईपास के रूप में यह केवल जहाजों 1.1 ओपन चाहिए।
तो हम MinGW C:/MinGW/
पर स्थापित किया है। इसके बाद मैं project site से tarball डाउनलोड करके FreeGLUT सेटअप करता हूं। निकालें और ./configure
आदेश को --prefix
की एक छोटी सी अतिरिक्त instructions के अनुसार makefiles चलाकर संकलन।
./configure --prefix=/c/Users/Owner/root/
make all
make install
अब मैं /c/Users/Owner/root/lib/
, /c/Users/Owner/root/include/
और इतने पर में freeglut है। अगली बार GLEW है, मेरी समस्या बच्चा जहां तक मैं कह सकता हूं।
the project site (direct 1.7.0.zip link) से स्रोत संग्रह डाउनलोड करें। संकलन एक ताड़ अधिक जटिल है, मेरा वर्तमान नुस्खा स्टैक ओवरफ्लो प्रश्न "Building glew on windows with mingw" से लिया गया है। एक संक्षिप्त रूप नीचे सूचीबद्ध है:
mkdir lib/
mkdir bin/
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
और /path/to/glew-1.7.0/
की "रूट" से चलाया जाना चाहिए।
अब पुस्तकालयों की स्थापना के साथ "हो गया" (कोई गलती मानते हुए ...) मेरे साधारण प्रोग्राम संकलन इस लाइन के साथ किया जाता है।
${G++} -DFREEGLUT_STATIC -DGLEW_STATIC -m32 main.cpp -o main.exe -lfreeglut_static -lopengl32 -lwinmm -lgdi32 -lglew32 -I ${ROOTPATH}/include -L ${ROOTPATH}/lib --static
अब इस एक सा विघटित और कारण है कि मैं विभिन्न "अतिरिक्त" तर्क है के माध्यम से चलना है और आप यह जान सकें कि त्रुटियों और समस्याओं मैं पहले से ही में चलाने के लिए और समाधान कर लिया है करने के लिए।
-DFREEGLUT_STATIC
और-lfreeglut_static
सामान्य-lfreeglut
के स्थान पर प्रयोग के रूप में हम एक स्थिर निर्माण यहाँ चाहते हैं। ऐसा करने में विफलता फ्रीग्लट से संबंधित लिंकर त्रुटियां देती है।-DGLEW_STATIC
इसी कारण से जोड़ा गया है।freeglut_init.c:(.text+0x5d9): undefined reference to '[email protected]'
:-lwinmm
लिंकर त्रुटि को ठीक करने के लिए जोड़ा गया है।-lgdi32
लिंकर त्रुटि को ठीक करने के लिए जोड़ा जाता है:c:/Users/Owner/root//lib\libfreeglut_static.a(freeglut_init.o):freeglut_init.c:(.text+0x58c): undefined reference to '[email protected]'
अब मैं निम्नलिखित लिंकर त्रुटि के साथ स्टम्प्ड हूँ:
c:/Users/Owner/root//lib\libglew32.a(glew.o):glew.c:(.text+0x83e8): undefined reference to `[email protected]'
c:/Users/Owner/root//lib\libglew32.a(glew.o):glew.c:(.text+0xa1b2): undefined reference to `[email protected]'
c:/Users/Owner/root//lib\libglew32.a(glew.o):glew.c:(.text+0xa290): undefined reference to `[email protected]'
न्यूनतम परीक्षण का मामला है कि इस त्रुटि का उत्पादन (main.cpp
) है।
#include <GL/glew.h>
#include <GL/freeglut.h>
int main(int argc, char **argv) {
glEnableVertexAttribArray(0);
}
विचार?
अपने प्रोग्राम को संकलित करने के लिए लाइन पर आखिरी बार -lopengl32 जोड़ने का प्रयास करें और देखें कि यह मदद करता है या नहीं। संपादित करें: संभवतः -ffreeglut_static होना चाहिए क्योंकि genpfault कहते हैं, मैं बहुत जल्दी पढ़ता हूं। – Jite
@Jite यह काम करता है! (न्यूनतम परीक्षण मामले पर) ओ.ओ कृपया इसे एक उत्तर दें ताकि मैं इसे ऊपर उठा सकूं और स्वीकार कर सकूं। मुझे विश्वास नहीं है कि मैं जीसीसी के तर्कों के संयोजन को याद करने में कामयाब रहा क्योंकि मैंने 12 अलग-अलग सेटों की कोशिश की है! इससे भी बेहतर अगर आप या कोई अन्य यादृच्छिक रूप से कोशिश करने वाले संयोजनों के अलावा लाइब्रेरी ऑर्डर चुनने के लिए _how_ पर कुछ जानकारी प्रदान कर सकता है। – nixeagle
खुशी है कि यह काम किया! मुझे लगता है कि किसी और को इसे और अधिक गहराई से समझाना होगा, लेकिन जो मैं समझता हूं, मुझे सही करें अगर मैं गलत हूं, तो यह छायांकन के बारे में है, जैसे कि आपके पास दो पुस्तकालय एक ही नाम के साथ एक समारोह को परिभाषित करते हैं, आखिरी एक लिंक खत्म हो जाएगा पहले छाया। – Jite