Haskell平台/ Cabal - 包装的安装' haskell-gi'由于未定义的引用而导致链接失败'

时间:2017-10-01 15:27:34

标签: windows haskell gcc cabal gobject

背景
目前,我正在开展一个涉及计算机视觉的项目。

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

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

我的设置
- 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安装绑定,因此我尝试安装包' haskell-gi' ,但由于未定义,它在链接阶段失败参考

示例
运行{ "_id" : { "$oid" : "67bg............"}, "ID" : "xxxxxxxx", "senses" : [ { "word" : "hello", "lang" : "EN", "source" : "EN_DICTIONARY" }, { "word" : "bye", "lang" : "EN", "source" : "EN_DICTIONARY" } ] } 后,我得到了:

cabal install haskell-gi

注意
这个未定义的引用是在.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' 。我也搜索了相关的东西,但那也没有用。

问题
你们有谁知道如何克服这个问题?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

我不知道在Windows上调用了什么软件包,但在Ubuntu上,我必须单独安装GTK和GI的C库/标题

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设置或链接到回购邮件,这可能会有所帮助。

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