ошибка: _hypot не был объявлен в этой области

7

Я пытаюсь скомпилировать С++-программу в Windows с помощью GCC и make файла.

Я получаю следующую ошибку

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)); }

Я читал, что для любого файла, который включен в GCC, требуется флаг -lm linker. Поэтому я добавил это в свой файл 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 $@ $(LFLAGS)

$(BUILD_DIR)/$(MAIN).o: $(SRC_DIR)/MyFirstVstMain.cpp
    $(CC) $(CFLAGS) -c -o $@ $< $(LFLAGS)

$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp $(SRC_DIR)/%.h
    $(CC) $(CFLAGS) -c -o $@ $< $(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: ehc.ac/p/mingw/bugs/2250
  • 0
    Как я могу обойти это. Я использую стороннюю библиотеку, которая использует math.h. В частности, Штайнберг VST SDK.
Показать ещё 1 комментарий
Теги:
gcc
g++
mingw

1 ответ

14
Лучший ответ

Это ошибка в MinGW, не нашли исправления, но с использованием -D__NO_INLINE__ или редактирования math.h _hypot, чтобы решить проблему, а не исправлять, но работать.

Другая возможная проблема: у вас может быть несколько версий MinGW, убедитесь, что вы используете правильный

  • 2
    ссылка на это , так как он содержит ответ от участника MinGW. Он предлагает отредактировать math.h или включить опцию -std=gnu++ ..., чтобы использовать библиотеку c ++ "без подавления расширений GNU", особенно избегая использования __STRICT_ANSI__ .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню