में जीसीसी लिंकर त्रुटियों को नहीं पहचानता है हमारे पास एक क्रॉस संकलित दृश्य स्टूडियो मेकफ़ाइल प्रोजेक्ट है। कंपाइलर त्रुटियों को पहचानने के लिए हमें पहले से ही solution similar to this पेश करना पड़ा है। अर्थात। हमने जीसीसी से आउटपुट को पार्स करने के लिए एक पर्ल लिपि पेश की है और इसे एक ऐसे रूप में रूपांतरित किया है जो विजुअल स्टूडियो समझ जाएगा। अगर हम घोषणा करते हैं:विजुअल स्टूडियो मेकफ़ाइल प्रोजेक्ट
int succ = thisRandomFunction(userPointer, 1, 1);
thisRandomFunction
के लिए कोई परिभाषा के साथ तो हम लिंकर त्रुटि प्राप्त होगी:
1> ./program.a(taskqueue.o): In function `TaskQueueAdd': 1>
D:\Git\program\taskqueue.c(94,1) : undefined reference to `thisRandomFunction' 1>
collect2: ld returned 1 exit status 1> make: *** [program.exe] Error 1
लेकिन दृश्य स्टूडियो वास्तव में एक त्रुटि के रूप में नहीं मानता। एक ही समस्या के साथ एक दृश्य स्टूडियो सी ++ सांत्वना कार्यक्रम संयोजक त्रुटि है: इस
में1> d:\Git\program/taskqueue.c:94: undefined reference to `thisRandomFunction'
:
sub parseLinkerError
{
my $str = $_[0];
my $find = "undefined reference to";
my $replace = "error LNK2019: unresolved external symbol";
$str =~ s/$find/$replace/g;
return $str
}
हम इस परिवर्तित कर सकते हैं:
1> TestUndefinedReference.cpp
1>TestUndefinedReference.obj : error LNK2019: unresolved external symbol "int __cdecl something(int)" ([email protected]@[email protected]) referenced in function _main
1>D:\Projects\New folder\TestUndefinedReference\Debug\TestUndefinedReference.exe : fatal error LNK1120: 1 unresolved externals
इस कनवर्टर का उपयोग करके
1> D:/Git/eV+/program/taskqueue.c(94,1) error LNK2019: unresolved external symbol `thisRandomFunction'
बी यह दृश्य स्टूडियो लिंकर त्रुटि दुभाषिया की नकल करने के लिए पर्याप्त नहीं है। लिंकर त्रुटि देखने के लिए न्यूनतम आवश्यकताएं क्या हैं? क्या कोई समाधान है जो सीधे पाठ को पार्स किए बिना काम कर सकता है?
सभी सब में कमी है कोड परियोजना के लिए अपने लिंक को पढ़ने के बाद एक अच्छा सवाल है (कृपया बहाना मेरे पूर्व quirks)। अपने प्रश्न के संक्षिप्त जवाब प्राप्त करने के लिए, आपको इसे और अधिक प्रमुख बनाना चाहिए, संक्षेप में समझाएं। मेरे पास एक नहीं है, क्षमा करें। –
क्या आपने '/' से '\' तक स्लैश रूपांतरण जोड़ने का प्रयास किया था? $ str = ~ s/\ // \\ /; –
@JimBlack हाँ, हम "\" को परिवर्तित करते हैं। प्रश्न –