2010-08-16 18 views
11

में प्रतीकात्मक लिंक का पालन नहीं कर रहा है मैं विजुअल स्टूडियो 2008 सी ++ प्रोजेक्ट (वीजा 32 बिट) का उपयोग कर रहा हूं।संकलक विजुअल स्टूडियो सी ++

मेरे पास निम्नलिखित # शामिल है मेरे स्रोत कोड में निर्देश।

#include <example/header.h> 

मेरे में मैं 'उदाहरण' की मूल निर्देशिका, यानी

C:/.../include 

जहां हेडर का पूरा पथ

C:/.../include/example/header.h 

तरह लग रहा है फिर भी, 'निर्दिष्ट पथ शामिल उदाहरण 'प्रतीकात्मक लिंक (ए' .lnk 'फ़ाइल एक्सप्लोरर' नया शॉर्टकट 'के माध्यम से बनाया गया है)। मैं निम्नलिखित त्रुटि मिलती है

c: ... \ foo.cpp (37): गंभीर त्रुटि C1083: 'उदाहरण/header.h':: फ़ाइल को शामिल नहीं खोल सकता ऐसे कोई फ़ाइल या निर्देशिका

यदि मैं वास्तविक निर्देशिका के साथ प्रतीकात्मक लिंक को प्रतिस्थापित करता हूं, तो परियोजना सही ढंग से संकलित होगी। व्यावहारिक कारणों से मुझे इसे प्रतीकात्मक लिंक होने की आवश्यकता है। क्या विजुअल स्टूडियो प्री-प्रोसेसर लिंक का पालन करने के लिए वैसे भी है?

+1

अपना प्रश्न विवरण थोड़ा और स्पष्ट करने के लिए, आप 'example.h' को 'header.h' या कुछ में बदलना चाहेंगे, जैसा कि आप बाद में 'उदाहरण' का संदर्भ देते हैं, इसलिए पहले इसे पालन करना थोड़ा मुश्किल है। – Cam

+0

@Cam: हो गया। मैंने इसे अधिक सुगम बनाने के लिए प्रश्न को फिर से लिखने की कोशिश की है। – Akusete

+0

बहुत बेहतर;) ... यदि आप अपने डेस्कटॉप से ​​'example' पर ब्राउज़ करते हैं, तो क्या यह ठीक से काम करता है? साथ ही, क्या आप एक वास्तविक "प्रतीकात्मक लिंक" का उपयोग कर रहे हैं, या आप "जंक्शन" का उपयोग कर रहे हैं? (वह अंतिम प्रश्न व्यर्थ/स्पष्ट प्रतीत हो सकता है, लेकिन मैं बस सुनिश्चित करना चाहता हूं) – Cam

उत्तर

10

लिंक एक प्रतीकात्मक कड़ी (.lnk)

क्या आप वाकई एक शॉर्टकट नहीं बना रहे हैं क्या है? शॉर्टकट्स प्रतीकात्मक लिंक की तुलना में उच्च स्तर पर काम करते हैं और इसका मतलब अनुप्रयोगों के लिए कुछ भी नहीं है।

इसके विपरीत, प्रतीकात्मक लिंक (यदि सही ढंग से बनाया गया है) फ़ाइलों/फ़ोल्डरों को पढ़ने/लिखने वाले किसी भी एप्लिकेशन के साथ ठीक काम करना चाहिए।

अधिक जानकारी के लिए, आप इस article about symbolic links को पढ़ने पर विचार करना चाहेंगे, जो बताता है कि आप mklink का उपयोग करके एक प्रतीकात्मक लिंक कैसे बना सकते हैं।

  • शॉर्टकट: ऑपरेटिंग सिस्टम स्तर पर (अनुप्रयोगों जो पढ़ा करना चाहते हैं/लिंक लिखते हैं, यह है

    यहाँ उस लेख पर एक टिप्पणी "बर्नार्ड Kerckenaere" द्वारा की कोई उपयोगी टुकड़ा है सिर्फ एक व्यर्थ फ़ाइल)

  • नरम लिंक (या प्रतीकात्मक कड़ी): एक शॉर्टकट की तरह है, लेकिन पर फाइल सिस्टम के स्तर (अनुप्रयोगों पढ़ने/ लिंक लेखन, वास्तव में पढ़ा जाएगा/ फ़ाइल से जुड़े फ़ाइल को लिखें) ... इस विभाजन भर में काम करेंगे, या ड्राइव

  • हार्ड लिंक: केवल फ़ाइलों के लिए, क्या होता है कि एक ही शारीरिक डेटा को इंगित कई फ़ाइल प्रविष्टियों देखते हैं कि, जब आप एक प्रविष्टि को हटाने, अन्य इच्छा है अभी भी काम करते हैं, डेटा तब तक नहीं चलेगा जब तक कि सभी प्रविष्टियां हटा दी जाती हैं (यदि मुलायम लिंक के साथ आप मूल निर्देशिका को हटाते हैं, तो लिंक अब और काम नहीं करेगा!) -> आप स्पष्ट रूप से केवल कठिन लिंक बना सकते हैं एक ही विभाजन पर एक फ़ाइल के लिए

आप जो बनाना चाहते हैं वह प्रतीकात्मक लिंक है जो आप /D पैरामीटर के साथ mlink का उपयोग कर कर सकते हैं।

+0

आह ... मैं विकास के लिए अक्सर खिड़कियां नहीं करता हूं। मैं आश्चर्यचकित हूं 'ln -s', साइगविन में '.lnk' फ़ाइल बनाई गई – Akusete

+0

मैं विंडोज़ के लिए एक लिनक्स प्रोजेक्ट पोर्ट कर रहा हूं और स्क्रिप्ट जेनरेटेड हेडर फ़ाइल लिंक 'ln -s' का उपयोग कर रहा हूं, जिस पर सिगविन ने वास्तविक के बजाय शॉर्टकट बनाया प्रतीकात्मक लिंक – Akusete

+0

@ अकुसेते: आह - यह कष्टप्रद है। मैं * निक्स विकास या साइगविन के साथ अविश्वसनीय रूप से परिचित नहीं हूं (हालांकि मैं इसे ठीक करने पर काम कर रहा हूं!), लेकिन मुझे नहीं लगता कि आप आसानी से साइगविन के माध्यम से एक प्रतीकात्मक लिंक बना सकते हैं। क्या आप एमएनलिंक पर कॉल के साथ एलएन-एस इंस्टेंस को प्रतिस्थापित कर सकते हैं? – Cam

1

.lnk प्रतीकात्मक लिंक नहीं है, यह एक्सप्लोरर के लिए शॉर्टकट फ़ाइल है। हार्ड लिंक बनाने के लिए,

fsutil hardlink create link_name file_name 

Vista पर उपयोग करते हैं, वहाँ सांकेतिक लिंक बनाने के लिए mklink उपयोगिता है।

0

सिमलिंक की बात करते समय विजुअल स्टूडियो के पुराने संस्करण थोड़ा जटिल हैं। \H पैरामीटर का उपयोग कर फ़ाइलों पर हार्ड लिंक शायद ही कभी काम करते हैं, लेकिन \D का उपयोग कर संपूर्ण निर्देशिकाओं को सिम्लिंक करना आमतौर पर ठीक है। इसके बाद, आपको फ़ोल्डर से और अपने प्रोजेक्ट में फ़ोल्डर को फिर से जोड़ने और फिर से जोड़ने की आवश्यकता हो सकती है।

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