2012-12-15 11 views
7

में जीएलईडब्ल्यू, एसडीएल और ओपनजीएल का उपयोग कर अनसुलझा बाहरी प्रतीक मैं this ओपनजीएल ट्यूटोरियल का उपयोग कर रहा हूं। मैंने अपनी खिड़की के निर्माण के लिए एसडीएल का इस्तेमाल किया और अब मुझे glew का उपयोग करने की आवश्यकता है (ट्यूटोरियल के नीचे एक और चीज अनुभाग देखें)। लेकिन जो कुछ भी मैं लिंक करता हूं, उसे शामिल करता हूं, कॉपी करता हूं या परिभाषित करता हूं, मुझे अनसुलझा बाहरी प्रतीक त्रुटियां मिलती हैं।VISual स्टूडियो 2010 एक्सप्रेस

मेरे पास है:

  • Glew लिब फ़ोल्डर
  • जोड़ा करने के लिए फ़ोल्डर शामिल करने के लिए अपने प्रोजेक्ट से जुड़ा हुआ मेरा पथ शामिल
  • कॉपी किए गए सी करने के लिए बिन और lib फ़ाइलों में शामिल हैं,: \ Program Files (x86) उचित नक्शे
  • glew32.dll की नकल की और
  • शामिल है और परिभाषित विभिन्न फाइलों मेरी system32 फ़ोल्डर में glew32mx.dll में \ Microsoft SDKs \ Windows \ v7.0A \
  • 012 (स्क्रीनशॉट 2 देखें)

मैं स्क्रीनशॉट को बात करने दूंगा, मैं क्या भूल गया?

स्क्रीनशॉट:

यहाँ लेकिन कारण नए उपयोगकर्ता नियम मैं उन्हें यहाँ शामिल नहीं कर सकते करने के लिए जाना करने वाले थे। Here is a link

+0

आप इन सभी स्क्रीनशॉट कर दिया है, लेकिन जोड़ने त्रुटि पोस्ट करने के बारे नहीं सोचा था। –

+1

@ BartekBanachewicz लिंकर त्रुटियां स्क्रीनशॉट में हैं। – Aaron

+1

हो सकता है कि आप एक लाइब्रेरी का 32-बिट संस्करण और दूसरे के 64-बिट संस्करण का उपयोग कर रहे हों। मुझे यकीन नहीं है कि यह एक लिंकर त्रुटि का कारण बन जाएगा, लेकिन मुझे पता है कि यह एकाधिक पुस्तकालयों का उपयोग करते समय मुद्दों का स्रोत हो सकता है। – Aaron

उत्तर

0

मुझे लगता है कि आपको glew32sd.lib या glew32s.lib (डीबग या रिलीज बिल्ड कॉन्फ़िगरेशन के आधार पर) से लिंक करने की आवश्यकता है, क्योंकि आपने GLEW_STATIC को परिभाषित किया है।

यहां हाल ही में समाप्त हुए Win32 glew एप्लिकेशन पर प्री-कंपाइल हेडर से एक स्निपेट है।

#pragma comment(lib, "OpenGL32.lib") 
#pragma comment(lib, "GLu32.lib") 
#pragma comment(lib, "freeglut_static.lib") 

#define GLEW_STATIC 

#if defined _DEBUG 
    #pragma comment(lib, "glew32sd.lib") 
#else 
    #pragma comment(lib, "glew32s.lib") 
#endif 

#include <GL\glew.h> 
#include <gl\GL.h> 
#include <gl\GLU.h> 

ध्यान दें कि हम glew32s.lib और glew32sd.lib (डिबग समकक्ष) है, जो मेरा मानना ​​है कि Glew के लिए स्थिर lib है इस्तेमाल किया: यह पुस्तकालयों हम से जुड़ा हुआ पता चलता है।

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

तो उदाहरण के लिए यदि आपका प्रोजेक्ट c: \ MyProject \ Debug \ MyProject.exe पर बनाता है, तो cll \ cP \\Pject \ deg को कॉपी करें।

मुझे उम्मीद है कि इससे मदद मिलती है।

+2

का उपयोग करते हुए 'pragma टिप्पणी (lib' एक बहुत बुरी आदत है। यह pragma अमानक, और गैर पोर्टेबल है प्लस यह आप गलत तरीके से सोचने के लिए मजबूर करती है। पुस्तकालयों के साथ लिंक करना लिंकर की नौकरी है, इसलिए ग में पुस्तकालय संदर्भ जाम ++ कोड लंबी अवधि में एक बुरा विचार है। अपने आप को एक पक्ष बनाओ, और परियोजना सेटिंग्स में पुस्तकालयों को जोड़कर ठीक से लिंक करें। या बेहतर अभी तक, सभ्य बिल्ड सिस्टम - सेमेक/क्यूमेक सीखें - जो मांग पर परियोजना फाइलें उत्पन्न कर सकता है - क्योंकि यह काफी संभव है आप दृश्य स्टूडियो हमेशा के लिए उपयोग करने के लिए इस परिप्रेक्ष्य नहीं जा रहा है कि कर रहा है। जहां के लिए क्या करने के लिए – SigTerm

+0

गैर मानक? और पोर्टेबल? वहाँ दो अलग अलग linkers को आदेश जारी करने के लिए एक मानक तरीका है? और करता ऑप्स सवाल से कोई लेना देना है? तो आप लिंकर को निर्देश देने के ओपीएस विधि को देखने के लिए परेशान हैं, आप देखेंगे कि यह गैर-पोर्टेबल भी है (और विंडोज प्लेटफार्म के लिए विशिष्ट)। तो वास्तव में, आपकी राय के लिए धन्यवाद, लेकिन मैंने वर्षों से वीएस का उपयोग किया है, और मुझे स्विच करने की कोई आवश्यकता नहीं है। कहीं भी अपने उपकरण प्रेम का विज्ञापन करें जो इसके प्रासंगिक है। – fishfood

+0

"गैर मानक क्या है?" सी ++ करने के लिए। सी ++ मानक में मौजूद नहीं है। "और पोर्टेबल कहां?" * किसी भी * गैर-माइक्रोसॉफ्ट कंपाइलर, जीसीसी के विंडोज संस्करण सहित। "क्या दो अलग-अलग लिंकर्स को कमांड जारी करने का कोई मानक तरीका है?" हाँ वहाँ है। निर्माण प्रणाली के रूप में qmake, cmake या scons का प्रयोग करें। वे विभिन्न लक्ष्य प्लेटफार्मों के लिए लिंकर कमांड जारी कर सकते हैं। सेमीकेक/qmake बनाम परियोजनाओं उत्पन्न कर सकते हैं। "और विंडोज प्लेटफ़ॉर्म के लिए विशिष्ट" कोई प्लेटफ़ॉर्म-विशिष्ट कोड नहीं देख सकता है। एसडीएल के साथ सभी प्लेटफॉर्म पर संकलित होना चाहिए। – SigTerm

0

यह आपकी तत्काल समस्या का समाधान नहीं कर सकता है लेकिन बाद में आने वाले अन्य लोगों को आपकी सहायता करने में मदद कर सकता है। मुझे नहीं पता। जो कुछ मैंने प्रदान किया है, वह सीखने के लिए केवल एक और संसाधन की सिफारिश है जो आपने पूछा था।

अब, मुझे लगता है कि आपका पहला लिंक टूटा हुआ है, क्योंकि यह मेरे लिए स्क्रीनशॉट से लिंक है। मैं ट्यूटोरियल की जांच करने वाला था लेकिन उस वजह से नहीं कर सका।

वैसे भी, मैं OpenGL SuperBible 5th ed; नामक पुस्तक का उपयोग कर रहा हूं जो बहुत आसानी से पच जाता है।

यह उम्मीद करता है कि आप 3 डी ग्राफिक्स के बारे में कुछ भी नहीं जानते हैं, पुस्तकालयों को कैसे शामिल करें, अपने सिस्टम के लिए एक विंडो बनाएं आदि। हालांकि, यह लंबे समय तक पढ़ने के लिए अत्यधिक कठिन होने के बिना बहुत विस्तार से जाता है। मैंने किताब को दो सप्ताह में पूरा किया (ठीक है, छुट्टियों के दौरान, और कुछ नहीं कर रहा)।

मैं किसी भी तरह से किताब मालिक से संबद्ध नहीं कर रहा हूँ, मैं सिर्फ यह बहुत पसंद आया है और यह है कि क्या आप के साथ कृपा यह द्वारा संचालित किया गया संघर्ष कर रहे हैं मुझे लगता है।

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