gpt4 book ai didi

c++ - g++ makefile "was not declared in this scope"用于 winbase.h 中的元素

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:13 26 4
gpt4 key购买 nike

我正在尝试编译一个包含 windows.h 的程序,但对于驻留在 winbase.h 中的每个元素,我都收到诸如“错误:‘DCB’未在此范围内声明”之类的错误。我已经将 MinGW 路径包含在所需的 header 中(还尝试将 -I"C:\MinGW\x86_64-w64-mingw32\include"-lwindows 添加到 CFLAGS 变量)。有什么建议吗?

# Command variables
CC = g++
DEBUG = -Wall -g
CFLAGS = -m64 -I"C:\Program Files\Java\jdk1.7.0_21\include" $(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);

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

关于c++ - g++ makefile "was not declared in this scope"用于 winbase.h 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25285229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com