Link 带有 Haskell 的外国 C 库

Link a foreign C library with Haskell

讨论 Haskell 的 FFI 的在线教程都使用本地定义的 C 文件制作简单示例,然后编译该文件并使用 Haskell 二进制文件 linked。我如何做一些更实质性的事情,比如,link 我的 Haskell 二进制文件和蓝牙库?

假设我在我的系统上安装了 BlueZ 和所需的开发人员库。在 C 中,我只需将标志 -lbluetooth 传递给 GCC,它就会按预期工作。我可以在我的 cabal 文件中将此标志传递给 Haskell 并期望我的 FFI 导入工作吗?

你的 cabal 文件中会有这样的东西:

library
  exposed-modules: YourBluetoothBinding
  build-depends:   {- Haskell dependencies -}
  c-sources:     {- your own C files that may be needed -}
  pkgconfig-depends: bluez
  includes: bluetooth/bluetooth.h
  extra-libraries: bluetooth

我不确定 pkgconfig-depends 是否对 Windows 做了任何事情。