2011-07-03 10 views
5

मैं सी परियोजना को पोर्ट करने जा रहा हूं जो विंडोज़ में यूनिक्स के लिए था। अब तक, मैं इसे संकलित कर सकता हूं लेकिन निर्माण नहीं कर सकता। समस्या मैं हो रही है, है कार्य करता है जो हेडर फाइल घोषित किये गए हैं में से कुछ याक files.so मैं निम्नलिखित त्रुटियाँ हो रही है में परिभाषित कर रहे हैं:दृश्य स्टूडियो में yacc और bison

error LNK2001: unresolved external symbol function_name 

मैं में .y और .l फ़ाइलों को जोड़ने हूँ प्रोजेक्ट की स्रोत निर्देशिका। मुझे लगता है कि मैं विंडोज़ संस्करण में बंदरगाह फ़ाइलों को बंद नहीं कर सकता था या मैं कुछ बेवकूफ कर रहा हूं। मैं इसे वेब पर खोजता हूं लेकिन इसके लिए उचित ट्यूटोरियल नहीं मिल सका। क्या आप कृपया मुझे

  1. मैं प्रोजेक्ट में .y या .l फ़ाइलों को कैसे जोड़ सकता हूं।
  2. मैं उन फ़ाइलों को विंडोज़ के अनुकूल कैसे बनाऊंगा?
  3. मैं उन्हें अन्य ऑब्जेक्ट फ़ाइलों से कैसे जोड़ सकता हूं।

संपादित

मैं flex.exe .Following का उपयोग कर .yy.c फाइलों में .l फ़ाइल में बदलाव के साथ की कोशिश की कमान के लिए यह

 c:\> flex.exe name.l 

जाना चाहिए है कि दोनों flex.exe और नाम। एल C;> में हैं .और मैंने उन सभी फ़ाइलों को .l .y(previously present for parsing in unix system) .yy.c(corrsonding yacc file for windows) पहले एक्सिसिटिंग प्रोजेक्ट के समाधान में लोड किया था। एक बार मैं संकलन, मैं निम्नलिखित

Can't read the header file parserheaderfile.h 

इस हेडर फाइल जो यूनिक्स प्रणाली में bison द्वारा उत्पन्न किए जाने की जरूरत है मिलता है। तो मुझे लगता है कि मैं bisonwindows के लिए संगत बनाने में सक्षम नहीं हूं। इसलिए कृपया मुझे बताएं कि मैं इस समस्या को कैसे हल कर सकता हूं?

अग्रिम धन्यवाद।

उत्तर

7

आपको अपनी .y और .l फ़ाइलों के लिए कस्टम बिल्ड नियम जोड़ने की आवश्यकता है। ऐसा करने के लिए, आप

  1. करने की जरूरत है .l फ़ाइल और .y फ़ाइल
  2. के लिए एक डमी ग फ़ाइल बनाने के प्रोजेक्ट के लिए .l, .y और दोनों ग फ़ाइलें जोड़
  3. सही .l फ़ाइल का चयन करें और गुण
  4. Configuration- पर क्लिक करें> सभी विन्यास
  5. जनरल> आइटम type-> कस्टम उपकरण का निर्माण
  6. लागू
  7. कस्टम निर्माण उपकरण,> जनरल> कमान लाइन->उपकरण,
  8. कस्टम का निर्माण> जनरल> Outputs->lexer.c
  9. कस्टम उपकरण, निर्माण> जनरल> अतिरिक्त Dependencies->parser.y parser.c
  10. लागू
  11. का चयन करें।समाधान एक्सप्लोरर
  12. Configuration- में y फ़ाइल> सभी विन्यास
  13. जनरल> आइटम type-> कस्टम निर्माण उपकरण
  14. लागू
  15. कस्टम निर्माण उपकरण,> जनरल> कमान लाइन->bison -oparser.c parser.y
  16. कस्टम का निर्माण उपकरण,> जनरल> Outputs->parser.c parser.h

इसके अलावा, आप flex.exe, bison.exe और सिस्टम खोज पथ में m4.exe की आवश्यकता है। एक और कमी यह है कि वीएस को निर्भरता सही नहीं होती है, इसलिए जब आप पार्सर या लेक्सर फ़ाइलों में कुछ बदलते हैं, तो आपको परियोजना को मैन्युअल रूप से पुनर्निर्माण करने की आवश्यकता होती है।

+0

क्या यह कुछ है जब आप प्रत्येक बार f/lex और/या bison/yacc का उपयोग करके एक नई परियोजना शुरू करते हैं? या आप इसे एक बार सेट कर सकते हैं और वीएस हमेशा के लिए सेटिंग्स को हमेशा याद रखेगा? साथ ही, क्या उन पुस्तकालयों का उपयोग करने के लिए कोई अनुशंसित आईडीई है? जीसीसी के साथ संकलित करने से पहले आपको कमांड लाइन से चीजें करना कभी-कभी परेशान हो सकता है जब आपको f/lex और/या bison/yacc चलाने की आवश्यकता होती है। – velocirabbit

+1

@velocirabbit यह एक परियोजना विशिष्ट सेटिंग है। तो आपको इसे प्रत्येक .l या .y फ़ाइल के लिए कॉन्फ़िगर करने की आवश्यकता है। – Rudi

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