c++ - 为什么即使使用 -L 和 -I 命令,目标文件也没有与 allegro 库链接?
问题描述
我正在使用 vs 代码并尝试与 allegro 链接。我对 .json 文件知之甚少,所以我避免使用它们。这是我试图运行的示例代码:
#include <allegro5/allegro.h>
#include <allegro5/allegro_font.h>
int main(int argc, char **argv)
{
al_init();
al_init_font_addon();
ALLEGRO_DISPLAY* display = al_create_display(800, 600);
ALLEGRO_FONT* font = al_create_builtin_font();
al_clear_to_color(al_map_rgb(0, 0, 0));
al_draw_text(font, al_map_rgb(255, 255, 255), 400, 300, ALLEGRO_ALIGN_CENTER, "Welcome to Allegro!");
al_flip_display();
al_rest(5.0);
al_destroy_font(font);
al_destroy_display(display);
return 0;
}
通过使用 cmd 命令:
g++ -o test.exe main.cpp -IE:\ImportantSoftwares\allegro\include -LE:\ImportantSoftwares\allegro\lib -lallegro_monolith
我收到以下错误:
C:\Users\SHAO~1\AppData\Local\Temp/cccXEAJj.o:main.cpp:(.text+0x3a): undefined reference to `al_install_system'
C:\Users\SHAO~1\AppData\Local\Temp/cccXEAJj.o:main.cpp:(.text+0x3f): undefined reference to `al_init_font_addon'
C:\Users\SHAO~1\AppData\Local\Temp/cccXEAJj.o:main.cpp:(.text+0x53): undefined reference to `al_create_display'
C:\Users\SHAO~1\AppData\Local\Temp/cccXEAJj.o:main.cpp:(.text+0x5b): undefined reference to `al_create_builtin_font'
C:\Users\SHAO~1\AppData\Local\Temp/cccXEAJj.o:main.cpp:(.text+0x81): undefined reference to `al_map_rgb'
C:\Users\SHAO~1\AppData\Local\Temp/cccXEAJj.o:main.cpp:(.text+0xa4): undefined reference to `al_clear_to_color'
C:\Users\SHAO~1\AppData\Local\Temp/cccXEAJj.o:main.cpp:(.text+0xc7): undefined reference to `al_map_rgb'
C:\Users\SHAO~1\AppData\Local\Temp/cccXEAJj.o:main.cpp:(.text+0x113): undefined reference to `al_draw_text'
C:\Users\SHAO~1\AppData\Local\Temp/cccXEAJj.o:main.cpp:(.text+0x118): undefined reference to `al_flip_display'
C:\Users\SHAO~1\AppData\Local\Temp/cccXEAJj.o:main.cpp:(.text+0x126): undefined reference to `al_rest'
C:\Users\SHAO~1\AppData\Local\Temp/cccXEAJj.o:main.cpp:(.text+0x131): undefined reference to `al_destroy_font'
C:\Users\SHAO~1\AppData\Local\Temp/cccXEAJj.o:main.cpp:(.text+0x13c): undefined reference to `al_destroy_display'
collect2: ld returned 1 exit status
我还尝试将 allegro 与此视频中描述的代码块逐步链接: https ://youtu.be/xH8mpOfRGxE
但我得到同样的错误
编辑:
我已将上述命令更改为:
g++ main.cpp -o test.exe -IE:/ImportantSoftwares/allegro/include -LE:/ImportantSoftwares/allegro/lib -lallegro_monolith-debug.dll -lallegro_monolith.dll
我还尝试在上面的命令中删除 .dll,例如:
g++ main.cpp -o test.exe -IE:/ImportantSoftwares/allegro/include -LE:/ImportantSoftwares/allegro/lib -lallegro_monolith-debug -lallegro_monolith
但我得到同样的错误
解决方案
问题已解决。我发现 allegro 库与我的链接器不兼容。我已经更新了 allegro 库,现在运行良好。
推荐阅读
- c++ - 在linux中运行c++ opencv程序的问题:未声明函数
- web - 如何使用正则表达式检查 url 是否包含 WWW?
- php - PHP 7.4 session_start 和 setcookie(会话未启动且 cookie 未设置)
- kotlin - Kotlin - 从函数中提取价值
- javascript - 反应上下文值在子类组件中不可用
- node.js - 以角度提供打包 NPM 命令
- javascript - NodeJs - 文件上传超出范围异常
- asp.net-core - 在 ASP.Net Core 的 ConfigureServices 中访问数据库(EF Core DbContext)
- javascript - 如何在不使用库的情况下求解 3x3 矩阵的逆矩阵?
- javascript - 如何删除一个类的所有元素期望一个数组