Saya mencoba mengkompilasi program Allegro 5 di Windows 10 dengan mingw-w64.

  • Saya sudah menginstal mingw-w64. Keluaran dari g++ --version adalah:

    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.
    
  • Saya mengunduh binari windows untuk Allegro 5 dari https://github.com/liballeg/allegro5/releases (File: allegro-x86_64-w64-mingw32-gcc-8.2.1-posix-seh-static-5.2.5.0.zip) dan membuka ritsleting file ke C:/allegro5 jadi sekarang saya punya C:/allegro5/bin, C:/allegro5/include, C:/allegro5/lib.

  • Program uji kecil:

    #include <stdio.h>
    #include <allegro5/allegro.h>
    
    int main(int argc, char **argv)
    {
       al_init();
       return 0;
    }
    
  • Dan akhirnya perintah yang saya jalankan untuk mengkompilasi: g++ test.cpp -I"C:/allegro5/include" -L"C:/allegro5/lib" -lallegro (Ada file lib bernama liballegro.dll.a di bawah C:/allegro5/lib)

Tetapi ada beberapa masalah saat menautkan:

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) Apa yang mungkin menjadi alasan untuk ini?

B) Apa yang harus saya lakukan untuk mengkompilasi secara statis? Apakah mengubah -lallegro menjadi -lallegro-static cukup ?

0
Ediolot 7 Maret 2019, 14:11

1 menjawab

Jawaban Terbaik

Ini:

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

Adalah salah satu varian GCC 32-bit yang disediakan oleh MinGW-W64. Anda mencoba menautkan kode 32-bit yang dihasilkannya dengan pustaka 64-bit yang disediakan di:

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

Yang tidak akan bekerja. Ganti kompiler Anda dengan varian 64-bit yang sesuai x86_64-posix-seh

2
Mike Kinghan 7 Maret 2019, 18:42