2015-11-17 20 views
7

मैं जीसीसी और मेकफ़ाइल का उपयोग कर विंडोज़ पर एक सी ++ प्रोग्राम संकलित करने की कोशिश कर रहा हूं।त्रुटि: इस क्षेत्र में '_hypot' घोषित नहीं किया गया था

मैं निम्न त्रुटि

c:\mingw\include\math.h: In function 'float hypotf(float, float)': 
c:\mingw\include\math.h:635:30: error: '_hypot' was not declared in this scope 
{ return (float)(_hypot (x, y)); } 

हो रही है मैंने पढ़ा है कि किसी भी फाइल है कि जीसीसी पर शामिल -lm लिंकर ध्वज की जरूरत है। तो मैं अपने makefile को यह जोड़ लिया है, लेकिन यह समस्या को सुधारने में नहीं आया ...

यहाँ मेरी makefile

CC := g++ 
CFLAGS := -std=c++0x -g -O2 -static-libgcc -static-libstdc++ 
LFLAGS := -lm 
BIN_DIR := bin 
BUILD_DIR := build 
SRC_DIR := src 
MAIN := MyFirstVstMain 
TARGET := MyFirstVstMake 
SOURCES := $(wildcard src/*.cpp) 
OBJECTS := $(SOURCES:$(SRC_DIR)/%.cpp=$(BUILD_DIR)/%.o) 

$(BIN_DIR)/$(TARGET): CREATE_DIRS $(BUILD_DIR)/$(MAIN).o $(OBJECTS) 
    $(CC) $(OBJECTS) $(CFLAGS) -o [email protected] $(LFLAGS) 

$(BUILD_DIR)/$(MAIN).o: $(SRC_DIR)/MyFirstVstMain.cpp 
    $(CC) $(CFLAGS) -c -o [email protected] $< $(LFLAGS) 

$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp $(SRC_DIR)/%.h 
    $(CC) $(CFLAGS) -c -o [email protected] $< $(LFLAGS) 

CREATE_DIRS: 
    if not exist $(BIN_DIR) mkdir $(BIN_DIR) 
    if not exist $(BUILD_DIR) mkdir $(BUILD_DIR) 

CLEAN: 
    if exist $(BUILD_DIR) rmdir /Q /S $(BUILD_DIR) 
+0

जाहिर MinGW में एक बग: http://ehc.ac/p/mingw/bugs/2250/ –

+0

मैं इसके पास कैसे आ सकता हूं। मैं एक तृतीय पक्ष लाइब्रेरी का उपयोग कर रहा हूं जो math.h का उपयोग करता है। विशेष रूप से steinberg vst sdk। – ScottF

+0

तो ... कोड नमूना के बारे में कैसे? कफलाग –

उत्तर

14

है यह MinGW में एक बग, नहीं मिला है है एक निश्चित लेकिन का उपयोग कर - D__NO_INLINE__ या math.h _hypot को हाइपोट को संपादित करने के लिए समस्या को हल किया, सही फिक्स नहीं बल्कि काम किया।

अन्य संभावित मुद्दा: आप, कई MinGW संस्करण स्थापित हो सकता है आप सही उपयोग कर रहे हैं की पुष्टि एक

+2

को [इस] से जोड़ने के अलावा मेकफ़ाइल अप्रासंगिक है (http://stackoverflow.com/questions/29450016/o1-2-3-with-std-c1y-11-98-if-cmath-is - शामिल-आईएम-हो रही-त्रुटि-हाइपो), क्योंकि इसमें एक मिनीजीडब्ल्यू योगदानकर्ता का उत्तर शामिल है। वह विशेष रूप से '__STRICT_ANSI__' के उपयोग से परहेज करते हुए," जीएनयू एक्सटेंशन के दमन के बिना "C++ लाइब्रेरी का उपयोग करने के लिए math.h संपादित करने या विकल्प '-std = gnu ++' विकल्प सहित) का सुझाव देता है। – foszter

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