MinGW

2012-01-15 13 views
8

के साथ GLEW का उपयोग कैसे करें मैं glew.a फ़ाइल प्राप्त करने के लिए स्वयं द्वारा Glew स्रोत संकलित करने के बजाय, मेरे प्रोजेक्ट में लिंक करने के लिए glew32.lib फ़ाइल का उपयोग करने का प्रयास कर रहा था। अब, मैं अपने प्रोजेक्ट में इन लिंक त्रुटियाँ हैं:MinGW

g++ -o Chapter10(OpenCLTest).exe src\Chapter10(OpenCLTest).o -lopengl32 -lglew -lglut32 -lglu32 -lopencl 
src\Chapter10(OpenCLTest).o:Chapter10(OpenCLTest).cpp:(.text+0x167): undefined reference to `_imp____glewBindBuffer' 
src\Chapter10(OpenCLTest).o:Chapter10(OpenCLTest).cpp:(.text+0x39a): undefined reference to `_imp__glewInit' 
src\Chapter10(OpenCLTest).o:Chapter10(OpenCLTest).cpp:(.text+0x3a7): undefined reference to `_imp__glewIsSupported' 
src\Chapter10(OpenCLTest).o:Chapter10(OpenCLTest).cpp:(.text+0x48a): undefined reference to `_imp____glewGenBuffers' 
src\Chapter10(OpenCLTest).o:Chapter10(OpenCLTest).cpp:(.text+0x495): undefined reference to `_imp____glewBindBuffer' 
src\Chapter10(OpenCLTest).o:Chapter10(OpenCLTest).cpp:(.text+0x4dd): undefined reference to `_imp____glewBufferData' 
src\Chapter10(OpenCLTest).o:Chapter10(OpenCLTest).cpp:(.text+0x50b): undefined reference to `_imp____glewGetBufferParameteriv' 
src\Chapter10(OpenCLTest).o:Chapter10(OpenCLTest).cpp:(.text+0x1d67): undefined reference to `_imp____glewBindBuffer' 
src\Chapter10(OpenCLTest).o:Chapter10(OpenCLTest).cpp:(.text+0x1d7f): undefined reference to `_imp____glewDeleteBuffers' 
src\Chapter10(OpenCLTest).o:Chapter10(OpenCLTest).cpp:(.text+0x1d95): undefined reference to `_imp____glewBindBuffer' 
src\Chapter10(OpenCLTest).o:Chapter10(OpenCLTest).cpp:(.text+0x1dad): undefined reference to `_imp____glewDeleteBuffers' 
src\Chapter10(OpenCLTest).o:Chapter10(OpenCLTest).cpp:(.text+0x2078): undefined reference to `_imp____glewBindBuffer' 
collect2: ld returned 1 exit status 

यह इस समस्या को हल लेकिन जिस तरह से मैं पूछना चाहता हूँ वहाँ जीएल एक्सटेंशन के किसी भी अन्य ओपन implementaions हैं द्वारा करने के लिए अच्छा है?

+1

मुझे डर है कि आपको g ++ के साथ संकलित पुस्तकालयों को ढूंढना होगा या उन्हें स्वयं बनाना होगा। – Mat

+0

आप किस संकलक का उपयोग कर रहे हैं? कौन सा ओएस? मुझे लगता है कि यह कंपाइलर को निर्दिष्ट करने के लिए सिर्फ एक मामला है जहां lib फ़ाइल (या। इस प्रणाली के आधार पर हम किस बारे में बात कर रहे हैं) को ढूंढना है। मैं अपने लिनक्स बॉक्स पर एक से अधिक वर्षों से जीएलईडब्ल्यू का उपयोग करता हूं और सबकुछ बहुत सीधी है। कृपया मुझे बताओ। –

+0

मिनजीडब्ल्यू (पोस्ट शीर्षक) विंडोज 7 – itun

उत्तर

0

आप GLee को आजमा सकते हैं जो अनिवार्य रूप से GLEW जैसा ही काम करता है।

5

मुझे डर है कि आप g +w के साथ glew.lib का उपयोग नहीं कर सकते (क्योंकि .lib एक मालिकाना माइक्रोसॉफ्ट प्रारूप है)। आपको प्राप्त होने वाली त्रुटियों में फ़ंक्शन एंट्री पॉइंट्स गुम हैं, जिसका अर्थ है कि आपने GLEW को सही तरीके से संकलित नहीं किया है (आवश्यक कार्यों को आपके .so में निर्यात नहीं किया गया है - इस समस्या को हल करने में सक्षम होने के लिए अधिक जानकारी जानने की आवश्यकता है)।

प्रश्न के दूसरे भाग के लिए, आप GLEH आज़मा सकते हैं। यह अभी भी विकास चरण में है और आपके लिए काम करने के लिए कुछ बदलाव की आवश्यकता हो सकती है, लेकिन हम इसे लिनक्स में काफी सफलतापूर्वक उपयोग कर रहे हैं, इसलिए यह बहुत बुरा नहीं होना चाहिए।

2

(मुझे पता है कि यह थोड़ा देर हो चुकी है, लेकिन मुझे लगा कि यह किसी और की समस्या को हल कर सकता है, इसलिए) मुझे एक प्रोग्राम को संकलित करने में बहुत ही समस्या थी जो गतिशील रूप से GLEW से जुड़ा हुआ था। ऐसा लगता है कि मैं अनदेखी की थी libglew32.dll.a फ़ाइल - (। कि मैं पहले अपने प्रोजेक्ट फ़ोल्डर में नकल की थी libglew32.a और glew32.dll के अलावा) कि भी उपस्थित होने की जरूरत

+0

मुझे अभी एक ही समस्या थी, जिसने इसे हल किया। मुझे संदेह था कि यह समाधान होगा लेकिन पूरी पुनर्मूल्यांकन प्रक्रिया से उत्सुक नहीं था। वैसे भी, डाउनलोड स्रोत, mingw (4.8) के साथ संकलित करें, और इसे कॉपी करें जैसे .exe ने चाल की - केवल भविष्य के संदर्भ के लिए। –

0

अजीब कोई भी इस बारे में कुछ भी कहा गया है। विंडोज़ पर डिफ़ॉल्ट रूप से, GLEW शीर्षलेख सभी बाहरी कार्यों के लिए declspec(dllimport) का उपयोग करते हैं, जो उनके सभी नामों को जोड़ता है। यही कारण है कि सभी गायब बाहरी प्रतीक नामों के सामने _imp____ है।

यदि आप GLEW के स्थिर निर्माण का उपयोग नहीं करना चाहते हैं (आपने libglew.a के बारे में कुछ बताया है), GLEW के निर्माण के दौरान और आपके आवेदन के निर्माण के दौरान GLEW_STATIC परिभाषित करें। यह स्थिर लिंकिंग के लिए नामों को उलझाएगा।

यदि आप GLEW के साझा लाइब्रेरी संस्करण से लिंक करना चाहते हैं, तो GLEW_BUILD के साथ GLEW बनाना सुनिश्चित करें। मुझे यकीन नहीं है कि यह जीसीसी के साथ जरूरी है, लेकिन यह है कि पुस्तकालय एमएसवीसी के साथ बनाया गया है।

इसके अलावा, जीएनयू टूलचेन वास्तव में लिंक करने के लिए माइक्रोसॉफ्ट के .lib प्रारूप का समर्थन करता है। source

आपको अपने आप को GLEW संकलित करने या इसे अपने प्रोजेक्ट में शामिल करने के लिए सबसे आसान लग सकता है। यह केवल एक स्रोत फ़ाइल और कुछ शीर्षलेख है। लाइब्रेरी को मैन्युअल रूप से संकलित करने के लिए, gcc -shared -o libGLEW.dll -Wl,--out-implib=libGLEW.dll.a -O2 -DGLEW_BUILD glew.c की लाइनों के साथ कुछ उपयोग करें। स्थिर संस्करण प्राप्त करने के लिए gcc -c -O2 -DGLEW_STATIC glew.c की तरह कुछ उपयोग करें।

 संबंधित मुद्दे