C++ 生成文件库链接问题

C++ 生成文件库链接问题,c++,makefile,static-libraries,C++,Makefile,Static Libraries,在我的项目中,我有3个文件夹: 包含包含lib头文件的 包含lib文件的Libs 包含我的项目源文件的源 但当我试图编译时,我得到以下错误: g++ -W -Wall -Werror -ansi -pedantic -L ./Libs/ -langelscript -I./Includes/ -o Pretorian Sources/math.o Sources/main.o Sources/functions.o Sources/main.o: In function `main': m

在我的项目中,我有3个文件夹:

  • 包含包含lib头文件的
  • 包含lib文件的Libs
  • 包含我的项目源文件的源
但当我试图编译时,我得到以下错误:

g++ -W -Wall -Werror -ansi -pedantic -L ./Libs/ -langelscript -I./Includes/ -o Pretorian Sources/math.o Sources/main.o Sources/functions.o 
Sources/main.o: In function `main':
main.cpp:(.text+0x10): undefined reference to `asCreateScriptEngine'
Sources/main.o: In function `ConfigureEngine(asIScriptEngine*)':
main.cpp:(.text+0x7c): undefined reference to `asGetLibraryOptions'
collect2: ld returned 1 exit status
这是我的Makefile:

NAME = Pretorian

SRCDIR = ./Sources/
HDDIR = ./Includes/
LIBDIR = ./Libs/

SRCS = $(wildcard $(SRCDIR)*.cpp)
OBJS = $(SRCS:.cpp=.o)

CC = g++

RM = rm -f
ECHO = echo -e

CFLAGS += -W -Wall -Werror -ansi -pedantic
HFLAGS = -I$(HDDIR)
LDFLAGS = -L $(LIBDIR) -langelscript

all: $(NAME)

%.o: %.cpp
                $(CC) $(CFLAGS) $(HFLAGS) -o $@ -c $<

$(NAME): $(OBJS)
                        $(CC) $(CFLAGS) $(LDFLAGS) $(HFLAGS) -o $(NAME) $^
                @$(ECHO) '\033[0;32m> Compiled Without error\033[0m'

clean:
                $(RM) $(OBJS)
                @$(ECHO) '\033[0;33m> Directory cleaned\033[0m'

fclean: clean
                $(RM) $(NAME)
                @$(ECHO) '\033[0;33m> Remove executable\033[0m'

re: fclean all

SRCList:
        @$(ECHO) $(SRCS)

OBJList:
        @$(ECHO) $(OBJS)
NAME=Pretorian
SRCDIR=/源/
HDDIR=/包括/
LIBDIR=./Libs/
SRCS=$(通配符$(SRCDIR)*.cpp)
OBJS=$(SRCS:.cpp=.o)
CC=g++
RM=RM-f
ECHO=ECHO-e
CFLAGS+=-W-墙-壁-壁-ansi-学究
HFLAGS=-I$(HDDIR)
LDFLAGS=-L$(LIBDIR)-langelscript
全部:$(名称)
%.o:%.cpp
$(CC)$(CFLAGS)$(HFLAGS)-o$@-c$<
$(名称):$(OBJS)
$(CC)$(CFLAGS)$(LDFLAGS)$(HFLAGS)-o$(名称)$^
@$(ECHO)“\033[0;32m>编译时没有错误\033[0m”
清洁:
$(RM)$(OBJS)
@$(ECHO)“\033[0;33m>已清理目录\033[0m”
清洁:清洁
$(RM)$(名称)
@$(ECHO)“\033[0;33m>删除可执行文件\033[0m”
回复:fclean all
列表:
@$(回声)$(SRCS)
对象列表:
@$(回声)$(OBJS)

我在Includes文件夹中有正确的Includes,在Libs文件夹中有libangelscript.a,这是一个订单问题

我将我的LDFLAG放在文件之前: 我替换这个:
$(CC)$(CFLAGS)$(LDFLAGS)$(HFLAGS)-o$(NAME)$^

通过这个:
$(CC)$(CFLAGS)$(HFLAGS)-o$(NAME)$^$(LDFLAGS)

对我来说,你似乎不是在链接静态库,而是一个动态库。你能尝试一下没有-langelscript的
g++../Libs/libangelscript.a
吗?