पर क्लैंग सबसे पहले, मैंने "Getting Started: Building and Running Clang" का पालन किया है। विशेष रूप से, मैंने इसे "विजुअल स्टूडियो का उपयोग" अनुभाग के अनुसार बनाया है। दूसरे शब्दों में, मैं गया है यह दृश्य स्टूडियो 2010विंडोज
दूसरे का उपयोग करके बनाया गया है, मैं मैन्युअल रूप से सेट MinGW वितरण के लिए पुस्तकालय पथ शामिल और:
साधारण प्रोग्राम मैं कोशिश कर रहा हूँ संकलन:
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
मैं संकलक से निम्नलिखित प्रतिक्रिया प्राप्त:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\iostream:39:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\ostream:39:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\ios:38:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\iosfwd:41:
In file included from C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\bits/postypes.h:41:
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:144:11: error: no member named 'fgetws' in the global namespace
using ::fgetws;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:146:11: error: no member named 'fputws' in the global namespace
using ::fputws;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:150:11: error: no member named 'getwc' in the global namespace
using ::getwc;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:151:11: error: no member named 'getwchar' in the global namespace
using ::getwchar;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:156:11: error: no member named 'putwc' in the global namespace
using ::putwc;
~~^
C:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\cwchar:157:11: error: no member named 'putwchar' in the global namespace
using ::putwchar;
~~^
6 errors generated.
Build error occurred, build is stopped
Time consumed: 646 ms.
स्पष्ट सवाल यह है कि - मुझे यह क्यों मिलता है?
साथ ही, मैं और अधिक विवरण जानना चाहते हैं, और के बाद से, बजना वेबसाइट अत्यंत संक्षिप्त जानकारी प्रदान करता है - मैंने सोचा था कि किसी ने मुझसे के लिए निम्नलिखित प्रश्न स्पष्ट कर सकते:
- जहां तक मैं समझता हूँ बजना नहीं है अपनी मानक पुस्तकालय है (stdC++ मुझे लगता है, है ना?)। यही कारण है कि मुझे मिनजीडब्ल्यू के हेडर और पुस्तकालयों का उपयोग करना है - क्या मैं सही हूँ?
- विजुअल स्टूडियो और मिनजीडब्ल्यू के साथ क्लैंग बनाने के बीच क्या अंतर है?
- क्या मुझे हार्ड कोड को
clang/lib/Frontend/InitHeaderSearch.cpp
में पथ शामिल करना है या मैं इसे छोड़ सकता हूं और बाद में उन स्क्रीन को "-I" विकल्प के माध्यम से निर्दिष्ट कर सकता हूं जैसा कि मैंने उपरोक्त स्क्रीनशॉट में किया है?
जो संयोजन मैंने अतीत में काम करने के लिए प्राप्त किया है वह है IITHeaderSearch.cpp को संशोधित करना है ताकि मेरे मिनजीडब्लू के पथ को शामिल किया जा सके और फिर मिनगब्लू टूलचेन के साथ निर्माण किया जा सके।मैं विजुअल सी ++ टूलचैन का उपयोग करके भी निर्माण करने में सक्षम हूं, लेकिन मैं यह समझने में सक्षम नहीं था कि निर्मित कंपाइलर को मिनीगू इंस्टॉल से हेडर और पुस्तकालयों का उपयोग करने के लिए कैसे प्राप्त किया जा सकता है (दृश्य सी ++ सी ++ मानक लाइब्रेरी हेडर नहीं कर सकते इस्तेमाल किया जा सकता है क्योंकि वे विजुअल सी ++ - विशिष्ट विशेषताओं पर बड़े पैमाने पर भरोसा करते हैं)। –
हाँ यह वही है जो मैं सोच रहा था। लेकिन मेरे लिए सबसे बड़ा भ्रम यह है कि कैसे दृश्य सी ++ या मिनजीडब्ल्यू के साथ निर्माण क्लैंग कंपाइलर के उपयोग के दौरान उपयोग किए जाने वाले पुस्तकालय पथ से संबंधित है। दूसरे शब्दों में, मुझे क्लैंग संकलित करने के बाद इन पथों को स्वतंत्र रूप से चुनने में सक्षम होना है। धरती पर क्यों ये पथ संकलक पर निर्भर करते हैं जिसे मैंने क्लैंग बनाने के लिए उपयोग किया था? –
@JamesMcNellis: क्लैंग वर्तमान में वीसी ++ हेडर को पार्स करने में सक्षम होना चाहिए। एकमात्र समस्याग्रस्त पार्सिंग क्षेत्र एमएफसी आईआईआरसी है। – rubenvb