错误:"_hypot"未在此范围内声明

error: '_hypot' was not declared in this scope

本文关键字:范围内 声明 hypot 错误      更新时间:2023-10-16

我正试图使用GCC和makefile在windows上编译一个c++程序。

我得到以下错误

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

我读到GCC上包含的任何文件都需要-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 $@ $(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)

这是MinGW中的一个错误,尚未找到修复方法,但使用-D_NO_INLINE_或编辑math.h_hypot来海波解决了问题,不是正确的修复方法,而是有效的。

其他可能的问题:您可能安装了多个MinGW版本,请验证您使用的是正确的