2012-03-05 7 views
6

मैं C++ एक ATL COM dll पर काम कर रहा हूँ और जब मैं एक पुस्तकालय का उपयोग करने के लिए प्रयास मैं संबंधित त्रुटियों की एक संख्या इस जैसे अधिकतम गया मिनट/पाने के लिए पर्याप्त नहीं वास्तविक पैरामीटर। ऐसा लगता है कि यह कई अन्य त्रुटियों का कारण बनता है हालांकि मुझे लगता है कि वे इससे संबंधित हैं।चेतावनी C4003: मैक्रो 'मिनट'

1>stdafx.cpp 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(364) : warning C4003: not enough actual parameters for macro 'min' 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(366) : warning C4003: not enough actual parameters for macro 'min' 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(372) : warning C4003: not enough actual parameters for macro 'max' 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(376) : warning C4003: not enough actual parameters for macro 'max' 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(378) : warning C4003: not enough actual parameters for macro 'max' 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(364) : error C2059: syntax error : '(' 
1>  c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(413) : see reference to class template instantiation 'OpenMS::DPosition<D>' being compiled 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(364) : error C2059: syntax error : ')' 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(364) : error C2143: syntax error : missing ')' before '?' 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(364) : error C2143: syntax error : missing ';' before '?' 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(364) : error C2574: 'OpenMS::DPosition<D>::DPosition(void)' : cannot be declared static 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(364) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(376) : error C2059: syntax error : '(' 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(376) : error C2059: syntax error : ')' 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(376) : error C2143: syntax error : missing ')' before '?' 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(376) : error C2143: syntax error : missing ';' before '?' 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(376) : error C2574: 'OpenMS::DPosition<D>::DPosition(void)' : cannot be declared static 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(376) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body 
1>c:\dropbox\openms-1.6.0\include\openms\datastructures\dposition.h(364) : error C2059: syntax error : '(' 

इस शीर्षक में इनलाइन मैक्रो के रूप में परिभाषित किया गया है:

/// smallest positive 
    inline static const DPosition 
    min() 
    { 
     return DPosition(std::numeric_limits<typename DPosition::CoordinateType>::min()); 
    } 

वैसे भी, मैं यहाँ पर पदों के लिए एक पढ़ा है कि इस समस्या पर चर्चा करने और संकेत मिलता है कि मैं उपयोग कर सकते हैं

#define NOMINMAX before #include "windows.h" 

लेकिन इस काम नहीं किया और मैं अभी भी त्रुटियों मिलता है। मैं पुस्तकालय को संशोधित करने के रूप में यह बड़ी है और मैं अपने परियोजना एक स्वनिर्धारित पुस्तकालय पर निर्भर तो मैं समाधान है कि मैं अपने dll कोड के भीतर संभाल कर सकते हैं किसी प्रकार पसंद करेंगे के लिए नहीं होती है करने के लिए नहीं करना चाहती। मैं और क्या कर सकता हुँ?

उत्तर

8

हो सकता है कि आप सीधे सहित "windows.h" नहीं बल्कि कुछ अन्य शीर्ष लेख जो इसे शामिल करने से पहले #define NOMINMAX रखा सही से पहले? स्रोत फ़ाइल की शुरुआत में इसे स्थानांतरित करने का प्रयास करें (यदि आपने नहीं किया)।

+0

मैं सिर्फ यह कोशिश की। एकमात्र जगह window.h शामिल है स्वचालित रूप से जेनरेट की गई हेडर फ़ाइल के भीतर है, इसलिए वहां कोई भी परिवर्तन समाप्त हो गया है। मैंने अपनी क्लास हेडर फ़ाइल में # स्वचालित रूप से नामांकित किया है इससे पहले कि यह स्वचालित रूप से बनाई गई हेडर फ़ाइल आयात करता है और वह विशेष त्रुटि दूर हो गई। अब मुझे एक समस्या के साथ छोड़ दिया गया है जहां यह स्मृति से बाहर हो गया और मुझे कमांड लाइन पर/Zm विकल्प का उपयोग करने के लिए कहा। लेकिन यह एक अलग समस्या है जिसे मुझे काम करने की ज़रूरत है। – Travis