g++ makefile "was not declared in this scope" for winbase.h 中的元素



我试图编译一个程序,其中包括windows.h,但我得到错误,如"错误:'DCB'未在此范围内声明"对于驻留在winbase.h中的每个元素。我已经将MinGW路径包含到所需的头文件中(还尝试添加-I"C:MinGWx86_64-w64-mingw32include" -lwindows到CFLAGS变量)。建议吗?

# Command variables
CC = g++
DEBUG = -Wall -g
CFLAGS = -m64 -I"C:Program FilesJavajdk1.7.0_21include" $(DEBUG) -c
LFLAGS = -m64 -Wl,--add-stdcall-alias -shared $(DEBUG)
COMP_CMD = $(CC) $(CFLAGS) $<
LINK_CMD = $(CC) $(LFLAGS) $? -o $@
HEAD_STUB_CMD = javah -classpath $(CLASS_PATH) $*

# Path variables
CLASS_PATH = ../bin
INCL_PATH = ../include/
SRC_PATH = ../source/
SUB2 = libsercom/
INCL_PATH2 = $(INCL_PATH)$(SUB2)
SRC_PATH2 = $(SRC_PATH)$(SUB2)
# Define a virtual path for .class in the bin directory
vpath %.class $(CLASS_PATH)

all: sercom.dll

#sercom
SERCOM = sercom
$(SERCOM).dll: $(SERCOM).o
    $(LINK_CMD)
$(SERCOM).o : $(SRC_PATH2)win$(SERCOM).c $(INCL_PATH2)$(SERCOM).h $(INCL_PATH2)err$(SERCOM).h
    $(COMP_CMD)

clean :
    rm *.o *.dll *.h

我建议您打开标题并查看错误列表中列出的名称。它们很可能在那里被包装在预处理器指令中。如果存在,请尝试在CFLAGS中传递所需的定义。

UPD:例如

#if (_WIN32_WINNT>= 0x0500)

WINBASEAPI BOOL WINAPI GetVolumePathNameA(LPCSTR,LPSTR,DWORD);

如您所见,这将需要一个定义。

最新更新