首页 > 解决方案 > 未找到 C++ Allegro 5 符号:__al_manangled_main 错误

问题描述

所以我有一个 C++ 游戏程序,它应该加载动态类/库加载,并且对图形库的所有引用只能在我正在创建的相应库中。现在我在 allegro 5 中创建了一个库,Makefile 看起来像这样

NAME = libSnakeAllegro.so

SRC = SnakeAllegro.cpp
SRC2 = SnakeAllegro.cpp main.cpp
CC =  g++ -g -Wall -Wextra -Werror -std=c++11

FLAGS =  -L allegro/lib -lallegro  -lallegro_acodec -lallegro_audio \
         -lallegro_color -lallegro_dialog -lallegro_font -lallegro_image \
         -lallegro_main -lallegro_memfile -lallegro_physfs \
         -lallegro_primitives -lallegro -lallegro_ttf -lallegro_video

all: $(NAME)

$(NAME): fclean
    @ # $(CC) -o snake $(SRC2) -I ../ -I allegro/include $(FLAGS)
    @  $(CC) -shared -fPIC -o $(NAME) $(SRC) -I ../ -I allegro/include $(FLAGS)

clean:
    @rm -fr $(NAME)
    @rm -fr $(NAME).dSYM

fclean : clean

re: fclean all 

dl_open我在另一个通用类中加载了库,但随后出现类似错误

dl_error : dlopen(lib/libSnakeAllegro.so, 5): Symbol not found: __al_mangled_main
  Referenced from: /home/rmdaba/Desktop/Nibbler/SnakeAllegro/allegro/lib/liballegro_main.5.2.dylib
  Expected in: flat namespace
 in /home/rmdaba/Desktop/Nibbler/SnakeAllegro/allegro/lib/liballegro_main.5.2.dylib

现在做了一些研究,发现我必须实施al_run_main(...),但问题是我不知道在哪里,因为我的SnakeAllegro班级没有主课。

标签: c++11makefileallegroallegro5

解决方案


推荐阅读