我一直在尝试使用 allegro 5 库编译程序并编写 #include<allegro5/allegro.h> 来使用它不会给出任何错误,但是当使用该库的任何函数时它会返回错误并说“不被定义。”
Building target: AllegroTesting
Invoking: GCC C++ Linker
g++ -o "AllegroTesting" ./src/allegrotest.o ./src/test2.o
/usr/bin/ld: ./src/test2.o: en la función `main':
/home/efeme/Programacion/Eclipse/AllegroTesting/Debug/../src/test2.cpp:5: definiciones múltiples de `main'; ./src/allegrotest.o:/home/efeme/Programacion/Eclipse/AllegroTesting/Debug/../src/allegrotest.cpp:6: primero se definió aquí
/usr/bin/ld: ./src/allegrotest.o: en la función `main':
/home/efeme/Programacion/Eclipse/AllegroTesting/Debug/../src/allegrotest.cpp:8: referencia a `al_install_system' sin definir
/usr/bin/ld: /home/efeme/Programacion/Eclipse/AllegroTesting/Debug/../src/allegrotest.cpp:10: referencia a `al_create_display' sin definir
/usr/bin/ld: /home/efeme/Programacion/Eclipse/AllegroTesting/Debug/../src/allegrotest.cpp:12: referencia a `al_map_rgb' sin definir
/usr/bin/ld: /home/efeme/Programacion/Eclipse/AllegroTesting/Debug/../src/allegrotest.cpp:12: referencia a `al_clear_to_color' sin definir
/usr/bin/ld: ./src/test2.o: en la función `main':
/home/efeme/Programacion/Eclipse/AllegroTesting/Debug/../src/test2.cpp:8: referencia a `al_install_system' sin definir
/usr/bin/ld: /home/efeme/Programacion/Eclipse/AllegroTesting/Debug/../src/test2.cpp:13: referencia a `al_create_display' sin definir
/usr/bin/ld: /home/efeme/Programacion/Eclipse/AllegroTesting/Debug/../src/test2.cpp:19: referencia a `al_map_rgb' sin definir
/usr/bin/ld: /home/efeme/Programacion/Eclipse/AllegroTesting/Debug/../src/test2.cpp:19: referencia a `al_clear_to_color' sin definir
/usr/bin/ld: /home/efeme/Programacion/Eclipse/AllegroTesting/Debug/../src/test2.cpp:20: referencia a `al_flip_display' sin definir
/usr/bin/ld: /home/efeme/Programacion/Eclipse/AllegroTesting/Debug/../src/test2.cpp:21: referencia a `al_rest' sin definir
/usr/bin/ld: /home/efeme/Programacion/Eclipse/AllegroTesting/Debug/../src/test2.cpp:22: referencia a `al_destroy_display' sin definir
collect2: error: ld devolvió el estado de salida 1
make: *** [makefile:58: AllegroTesting] Error 1
"make all" terminated with exit code 2. Build might be incomplete.```
错误来自链接器,因为它找不到它告诉您的函数。
要使用库,您必须告诉编译器 .h 文件在哪里可以使用尖括号 (
<librería.h>
) 访问它们,最重要的是,在哪里可以找到它。在文档中,它为您提供了一个如何编译它的示例:
如果这不起作用,您必须告诉链接器使用参数将库考虑在内
-l<librería>
。在 Linux 上,它们遵循命名法lib<librería>.so
。例如,如果调用库liballegro.so
,则参数为-lallegro
.您还必须使用参数指示它们所在的文件夹
-L<ruta>
。例如,如果它们在文件夹lib/allegro
中,则参数将为-Llib/allegro
。