1

我想让 Allegro 4 (MSCV 9) 与 Qt Creator 一起工作。我正在使用 Windows XP。我已将这些行添加到我的 .pro 中:

INCLUDEPATH += C:/Allegro/include \
LIBS += C:/Allegro/lib/allegro-4.4.2-md.lib \
        C:/Allegro/lib/allegro-4.4.2-monolith-md.lib \
        C:/Allegro/lib/allegrogl-0.4.4-md.lib \
        C:/Allegro/lib/loadpng-1.5-md.lib \

我的代码如下所示:

#include <iostream>
#include <allegro.h>

volatile int closedWindow = false;

void CloseButtonCallback() {closedWindow = true;}
END_OF_FUNCTION(CloseButtonCallback())

int main()
{
    allegro_init();
    set_color_depth(32);
    set_gfx_mode(GFX_AUTODETECT_WINDOWED, 400, 300, 0, 0);
    set_window_title("Testing");

    LOCK_FUNCTION(closeButtonCallback)
    set_close_button_callback(CloseButtonCallback);
    while(!closedWindow){}
    allegro_exit();
    return 0;
}
END_OF_MAIN()

当我尝试编译时,我不断收到这样的错误:

main.obj:-1:错误:LNK2019:函数“int __cdecl _manangled_main(void)”(?_manangled_main@@YAHXZ)中引用的未解析的外部符号imp__allegro_exit main.obj:-1:错误:LNK2019:未解析的外部符号_imp _set_close_button_callback在函数“int __cdecl _mangled_main(void)”(?_mangled_main@@YAHXZ) main.obj:-1 中引用:错误:LNK2019:未解析的外部符号_imp _set_window_title在函数“int __cdecl _mangled_main(void)”(?_mangled_main@ @YAHXZ)main.obj:-1:错误:LNK2019:函数“int __cdecl _mangled_main(void)”(?_mangled_main@@YAHXZ)中引用的未解析的外部符号_imp_set_gfx_mode main.obj:-1:错误:LNK2019:未解决外部符号_imp_set_color_depth 在函数“int __cdecl _mangled_main(void)”(?_mangled_main@@YAHXZ) main.obj:-1: error: LNK2019: unresolved external symbol __imp _install_allegro_version_check 在函数“int __cdecl _mangled_main(void)”(?_mangled_main@ @YAHXZ)

4

2 回答 2

2

我正在使用来自http://www.allegro.cc/files/的 MinGW 的预编译 Allegro 4.4 。我将存档中的这三个文件夹(bin、include、lib)合并到具有相同文件夹的 MinGW 文件夹中。然后添加LIBS += liballegro-4.4.2-mt到 .pro 文件中,一切正常。

于 2012-10-30T17:17:09.247 回答
1

看起来你必须为 Qt 使用 GCC 编译的 Allegro 版本。

就像是

LIBS +="path_to_allegro_for_mingw/lib/liballegro-4.4.2-md.a"

GCC 使用不同的名称修饰和不同的导出库,因此即使您使用 Allegro dll,MSVC 编译的 .lib 也无法工作。

于 2012-06-28T22:18:47.697 回答