2017-10-01 4 views
2

« références non définies » Contexte
Actuellement, je travaille sur un projet qui traite de la vision par ordinateur.

J'utilise ..
- Haskell comme langage de programmation.
- GTK + pour la création de l'interface graphique.
- FFmpeg pour lire et extraire des vidéos/images de chemins ou de la webcam.
- certains algorithmes pour la détection des contours.Haskell Plate-forme/Cabal - Installation du paquet « haskell-gi » échoue tout en reliant en raison de

Je veux ..
- rendu des vidéos (vidéo d'entrée non modifiée, aswell comme la vidéo de sortie modifiée) à un DrawingArea-widget qui fait partie de la bibliothèque GTK.

Ma configuration
- Windows 10 - 64 bits
- MSYS2/Mingw32
- Haskell Plate-forme (GHC 8.0.1)
- Cabal version 1.24.0.0
- ffmpeg-lumière 0,12. 0
- gtk-0.14.6

problème
pour rendre des vidéos avec GTK-je installer des liaisons pour les GI, alors j'ai essayé d'installer le paquet 'haskell-gi' mais il échoue à la phase de liaison en raison de références non définies.

Exemple
Après l'exécution cabal install haskell-gi i get:

C:\Users\Roland\AppData\Local\Temp\cabal-tmp-1788\haskell-gi-0.20.3\dist\build/libHShaskell-gi-0.20.3-4ylmwt0eEVy4Aeczi0KBpN.a(LibGIRepository.o):fake:(.text+0x19d8): undefined reference to `g_irepository_require' 
C:\Users\Roland\AppData\Local\Temp\cabal-tmp-1788\haskell-gi-0.20.3\dist\build/libHShaskell-gi-0.20.3-4ylmwt0eEVy4Aeczi0KBpN.a(LibGIRepository.o):fake:(.text+0x1f59): undefined reference to `g_typelib_symbol' 
C:\Users\Roland\AppData\Local\Temp\cabal-tmp-1788\haskell-gi-0.20.3\dist\build/libHShaskell-gi-0.20.3-4ylmwt0eEVy4Aeczi0KBpN.a(LibGIRepository.o):fake:(.text+0x26f3): undefined reference to `g_irepository_prepend_search_path' 
C:\Users\Roland\AppData\Local\Temp\cabal-tmp-1788\haskell-gi-0.20.3\dist\build/libHShaskell-gi-0.20.3-4ylmwt0eEVy4Aeczi0KBpN.a(LibGIRepository.o):fake:(.text+0x2bee): undefined reference to `g_base_info_gtype_get_type' 
C:\Users\Roland\AppData\Local\Temp\cabal-tmp-1788\haskell-gi-0.20.3\dist\build/libHShaskell-gi-0.20.3-4ylmwt0eEVy4Aeczi0KBpN.a(LibGIRepository.o):fake:(.text+0x2f2e): undefined reference to `g_irepository_find_by_name' 
C:\Users\Roland\AppData\Local\Temp\cabal-tmp-1788\haskell-gi-0.20.3\dist\build/libHShaskell-gi-0.20.3-4ylmwt0eEVy4Aeczi0KBpN.a(LibGIRepository.o):fake:(.text+0x42c7): undefined reference to `g_struct_info_get_field' 
C:\Users\Roland\AppData\Local\Temp\cabal-tmp-1788\haskell-gi-0.20.3\dist\build/libHShaskell-gi-0.20.3-4ylmwt0eEVy4Aeczi0KBpN.a(LibGIRepository.o):fake:(.text+0x460b): undefined reference to `g_struct_info_get_n_fields' 
C:\Users\Roland\AppData\Local\Temp\cabal-tmp-1788\haskell-gi-0.20.3\dist\build/libHShaskell-gi-0.20.3-4ylmwt0eEVy4Aeczi0KBpN.a(LibGIRepository.o):fake:(.text+0x4775): undefined reference to `g_struct_info_get_size' 
C:\Users\Roland\AppData\Local\Temp\cabal-tmp-1788\haskell-gi-0.20.3\dist\build/libHShaskell-gi-0.20.3-4ylmwt0eEVy4Aeczi0KBpN.a(LibGIRepository.o):fake:(.text+0x4aef): undefined reference to `g_union_info_get_field' 
C:\Users\Roland\AppData\Local\Temp\cabal-tmp-1788\haskell-gi-0.20.3\dist\build/libHShaskell-gi-0.20.3-4ylmwt0eEVy4Aeczi0KBpN.a(LibGIRepository.o):fake:(.text+0x4e33): undefined reference to `g_union_info_get_n_fields' 
C:\Users\Roland\AppData\Local\Temp\cabal-tmp-1788\haskell-gi-0.20.3\dist\build/libHShaskell-gi-0.20.3-4ylmwt0eEVy4Aeczi0KBpN.a(LibGIRepository.o):fake:(.text+0x4f9d): undefined reference to `g_union_info_get_size' 
collect2.exe: error: ld returned 1 exit status 
`gcc.exe' failed in phase `Linker'. (Exit code: 1) 
cabal: Leaving directory 'C:\Users\Roland\AppData\Local\Temp\cabal-tmp-1788\haskell-gi-0.20.3' 
cabal: Error: some packages failed to install: 
haskell-gi-0.20.3 failed during the building phase. The exception was: 
ExitFailure 1 

Remarque
Cette références non définies sont des méthodes qui sont définies dans .c/.h-fichiers qui font partie de GObjects' dossier gobject-introspection.

Qu'ai-je déjà essayé?
Lors de l'installation de Gtk2Hs et ffmpeg-light, je faisais face à des problèmes similaires mais j'ai pu me débarrasser de
- télécharger les fichiers source de développement et ajouter --extra-include-dir ou --extra- balises lib-dir à l'installation cabale
- l'ajout d'indicateurs de liaison (pkg-config---libs GObject introspection 1.0) aux paramètres cabale
- téléchargement de bibliothèques manquantes et de les ajouter au PATH
- modification des fichiers .pc (qui font partie du package-config)

Aucune des options ci-dessus a travaillé avec 'haskell-gi'. J'ai également cherché SO pour des choses liées, mais cela n'a pas fonctionné aussi.

Question
Est-ce que quelqu'un d'entre vous avez une idée de comment surmonter ce problème? Toute aide appréciée.

Répondre

1

Je ne sais pas ce que les paquets sont appelés sous Windows, mais sur Ubuntu je devais installer les C libs/en-têtes pour les TKB et GI séparément avec

sudo apt install libgirepository1.0-dev 
sudo apt install libgtk-3-dev 

depuis cabal (ou dans mon cas, stack) ne les a pas installées pour moi (bien que j'ai obtenu different error messages).

Vous ne dites pas si vous avez déjà fait cela, mais https://www.gtk.org/download/windows.php dit que vous devriez

pacman -S mingw-w64-x86_64-gtk3 
pacman -S mingw-w64-x86_64-toolchain base-devel 

puisque vous avez déjà MSYS.

Il peut être utile si vous pouvez poster vos paramètres de cabale ou un lien vers un repo.

(Vous pouvez également trouver https://github.com/lettier/movie-monad utile à regarder pour votre projet.)