Итак, у меня есть игровая программа на 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(...)
, но проблема в том, что я не знаю, где, поскольку у меня нет main в моем SnakeAllegro
классе.