gpt4 book ai didi

windows - Haskell Platform/Cabal - 由于 'haskell-gi',链接时安装包 'undefined references' 失败

转载 作者:可可西里 更新时间:2023-11-01 10:32:37 25 4
gpt4 key购买 nike

背景
目前,我正在从事一个处理计算机视觉的项目。

我用..
- Haskell 作为编程语言。
- 用于创建 GUI 的 GTK+。
- FFmpeg 从路径或网络摄像头读取和提取视频/帧。
- 一些边缘检测算法。

我想..
- 将视频(未修改的输入视频,以及修改后的输出视频)渲染到作为 GTK 库一部分的绘图区域小部件。

我的设置
- Windows 10 - 64 位
- MSYS2/Mingw32
- Haskell 平台(GHC 8.0.1)
- cabal 版本 1.24.0.0
- ffmpeg-light-0.12.0
- gtk-0.14.6

问题
要使用 GTK 渲染视频,我需要为 GI 安装绑定(bind),所以我尝试安装包 'haskell-gi' 但由于 undefined reference ,它在链接阶段失败.

例子
运行 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

注意
这个 undefined reference 是在 .c/.h 文件中定义的方法,这些文件是 GObjects 的 gobject-introspection 文件夹的一部分。

到目前为止我尝试了什么?
在安装 Gtk2Hs 和 ffmpeg-light 时,我遇到了类似的问题,但我能够通过 ..
- 下载开发源文件并将 --extra-include-dir 或 --extra-lib-dir 标签添加到 cabal 安装
- 将链接器标志 (pkg-config --libs gobject-introspection-1.0) 添加到 cabal 设置
- 下载缺少的库并将它们添加到 PATH
- 修改 .pc 文件(属于 package-config 的一部分)

以上选项均不适用于 'haskell-gi'。我也在 SO 中搜索了相关内容,但这也没有用。

问题
你们中有人知道如何解决这个问题吗?任何帮助表示赞赏。

最佳答案

我不知道这些包在 Windows 上叫什么,但在 Ubuntu 上我必须分别安装 GTK 和 GI 的 C 库/ header

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

因为 cabal(或者在我的例子中,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。

如果您可以发布您的 cabal 设置或链接到 repo,这可能会有所帮助。

(您可能还会发现 https://github.com/lettier/movie-monad 对您的项目很有用。)

关于windows - Haskell Platform/Cabal - 由于 'haskell-gi',链接时安装包 'undefined references' 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46513880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com