2017-10-01 18 views
2

배경
에 실패합니다.

저는 프로그래밍 언어로 하스켈을 사용합니다.
- Haskell.
- GUI 생성 용 GTK +.
- FFmpeg는 경로 또는 웹캠에서 비디오/프레임을 읽고 추출합니다.
- 가장자리 감지를위한 일부 알고리즘.하스켈 플랫폼/음모 - 연결하면서 패키지의 설치는 '하스켈 병사는'인해 현재 내가 컴퓨터 비전을 다루는 프로젝트에서 일하고 있어요 '정의되지 않은 참조'

내가 원하는 게 ..
- GTK 라이브러리의 일부인 그림 영역 위젯으로 비디오 (수정되지 않은 입력 비디오와 수정 된 출력 비디오)를 렌더링합니다.

내 설치
- 윈도우 10-64 비트
- MSYS2/Mingw32
- 하스켈 플랫폼 (GHC 8.0.1)
-는 FFmpeg 빛 - 0.12 - 1.24.0.0
음모 버전. 0
- GTK-0.14.6

문제
내가 GI에 대한 바인딩을 설치해야 GTK와 비디오 렌더링, 그래서 패키지를 설치하려고합니다 'haskell-gi' 그러나 정의되지 않은 참조으로 인해 연결 단계에서 실패합니다.

예는
cabal install haskell-gi를 실행 한 후 내가 얻을 :

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 


이 정의되지 않은 참조가 GObjects의 일부가 .c/.H-파일에 정의 된 방법은 ' gobject-introspection 폴더.

지금까지 무엇을 시도 했습니까?
Gtk2Hs와 ffmpeg-light를 설치하는 동안 비슷한 문제에 직면 해 있었지만 .. 내가 떼어 낼 수있었습니다.
- 개발 소스 파일을 다운로드하고 --extra-include-dir 또는 --extra- 도당 설치에 lib 디렉토리 - 디렉토리 태그
- 실종 라이브러리를 다운로드하고 PATH
에 추가 - - .PC 수정 파일 링커 플래그 (PKG-설정 --libs G 객체 성찰-1.0) 도당 설정
추가 (패키지 -config의 일부 임)

위의 옵션 중 아무 것도 작동하지 않습니다. 'haskell-gi' 나는 또한 관련 물건을 찾았으나 그것도 효과가 없었다.

질문
이 문제를 해결하는 방법에 대해 알고 계신 분이 있습니까? 어떤 도움을 주셔서 감사합니다.

답변

1

내가 패키지가 Windows에서 무엇이라고 모르겠지만, 우분투에 내가 cabal 이후

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

별도로 GTK와 GI의 C libs와/헤더를 설치했다 (또는 내 경우에는, stack)은 나를 위해 이것을 설치하지 않았습니다 (비록 내가 different error messages을 얻었습니다).

이미 이런 짓을했다면 당신은 말을하지 않습니다

하지만 https://www.gtk.org/download/windows.php

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

해야 이미 MSYS있어 이후 말한다.

음모 설정을 게시하거나 게시판에 연결할 수있는 경우 도움이 될 수 있습니다.

(프로젝트를 살펴볼 때 https://github.com/lettier/movie-monad이 유용 할 수도 있습니다.)