Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:'_hypot';未在此范围中声明 我试图用GCC和MaFIX文件编译Windows上的C++程序。_C++_Windows_Gcc_G++_Mingw - Fatal编程技术网

错误:'_hypot';未在此范围中声明 我试图用GCC和MaFIX文件编译Windows上的C++程序。

错误:'_hypot';未在此范围中声明 我试图用GCC和MaFIX文件编译Windows上的C++程序。,c++,windows,gcc,g++,mingw,C++,Windows,Gcc,G++,Mingw,我得到以下错误 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链接器标志。所以我把它添加到我的makefile中,但它并没有纠正这个问题

我得到以下错误

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链接器标志。所以我把它添加到我的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)
CC:=g++
CFLAGS:=-std=c++0x-g-O2-static libgcc-static libstdc++
LFLAGS:=-lm
BIN_DIR:=BIN
BUILD\u DIR:=构建
SRC_DIR:=SRC
MAIN:=MyFirstVstMain
目标:=MyFirstVstMake
来源:=$(通配符src/*.cpp)
对象:=$(源:$(SRC\u DIR)/%.cpp=$(BUILD\u DIR)/%.o)
$(BIN\u DIR)/$(目标):创建\u DIRS$(BUILD\u DIR)/$(MAIN.o$(对象)
$(CC)$(对象)$(CFLAGS)-o$@$(LFLAGS)
$(BUILD\u DIR)/$(MAIN.o:$(SRC\u DIR)/MyFirstVstMain.cpp
$(CC)$(CFLAGS)-c-o$@$<$(LFLAGS)
$(构建目录)/%.o:$(SRC目录)/%.cpp$(SRC目录)/%.h
$(CC)$(CFLAGS)-c-o$@$<$(LFLAGS)
创建目录:
如果不存在$(BIN_DIR)mkdir$(BIN_DIR)
如果不存在$(生成目录)mkdir$(生成目录)
清洁:
如果存在$(构建目录)rmdir/Q/S$(构建目录)

这是MinGW中的一个错误,没有找到一个固定的错误,但使用-D\u NO\u INLINE\u或编辑数学。h\u hypot to hypot解决了问题,不是正确的修复,而是有效的


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

显然,MinGW中存在一个bug:我如何解决这个问题。我正在使用一个使用math.h的第三方库。特别是斯坦伯格vst sdk。所以。。。代码示例如何?makefile除了显示链接到的cflagsling之外是不相关的,因为它包含来自MinGW贡献者的答案。他建议编辑math.h或包含选项
-std=gnu++
。。。利用C++库“不抑制GNU扩展”,特别避免使用<代码>