Неопределенная ссылка с использованием Allegro 5 с mingw-w64 - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь скомпилировать программу Allegro 5 для Windows 10 с помощью mingw-w64.

  • Я уже установил mingw-w64.Выходные данные g++ --version:

    g++.exe (i686-posix-dwarf-rev2, Built by MinGW-W64 project) 7.1.0
    Copyright (C) 2017 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
  • Я скачал бинарные файлы Windows для Allegro 5 из https://github.com/liballeg/allegro5/releases (файл: allegro-x86_64-w64-mingw32-gcc-8.2.1-posix-seh-static-5.2.5.0.zip) и распаковал файл в C:/allegro5 теперь у меня есть C:/allegro5/bin, C:/allegro5/include, C:/allegro5/lib.

  • Небольшая тестовая программа:

    #include <stdio.h>
    #include <allegro5/allegro.h>
    
    int main(int argc, char **argv)
    {
       al_init();
       return 0;
    }
    
  • Анаконец, команда, которую я запускаю для компиляции: g++ test.cpp -I"C:/allegro5/include" -L"C:/allegro5/lib" -lallegro (есть файл lib с именем liballegro.dll.a в C:/allegro5/lib)

Но при компоновке возникают некоторые проблемы:

C:\Users\xxxx\AppData\Local\Temp\ccg5z97Y.o:test.cpp:(.text+0x1e): undefined reference to `al_install_system'
collect2.exe: error: ld returned 1 exit status

A) Что может быть причиной этого?

B) Что я должен сделать, чтобы компилировать статически?Достаточно ли изменить -lallegro на -lallegro-static?

1 Ответ

2 голосов
/ 07 марта 2019

This:

g++.exe (i686-posix-dwarf-rev2, Built by MinGW-W64 project) 7.1.0

является одним из 32-битных вариантов GCC, предоставляемых MinGW-W64.Вы пытаетесь связать 32-битный код, который он генерирует, с 64-битными библиотеками, предоставленными в:

allegro-x86_64-w64-mingw32-gcc-8.2.1-posix-seh-static-5.2.5.0.zip

, которые не будут работать.Замените ваш компилятор соответствующим 64-битным вариантом x86_64-posix-seh

...