【问题标题】:haskell FFI - using dll on non-windows os?haskell FFI - 在非 Windows 操作系统上使用 dll?
【发布时间】:2013-09-17 21:49:19
【问题描述】:

可以是在非 Windows 操作系统上使用/与 Haskell 的 FFI(外来函数接口)交互的 Windows dll 吗?例如,如果我有 OSX,我可以将 .dll 与 FFI 接口(使用 dll 函数)吗?

示例: 我有一个在 Windows 中编写和编译的 my.dll 文件。使用 Haskell 的 FFI(外部函数接口),我可以在 Haskell 中编写一个程序,该程序将加载 my.dll 并使用其中的函数。问题是:我可以在 OSX 中编写 Haskell 程序并通过 FFI 使用 my.dll,还是必须是在 Windows 中编译的 Haskell 程序(因为我想使用 my.dll)?

【问题讨论】:

  • 其他操作系统将有自己的共享库的方法。它们不会被称为 .dll。类似 Linux 的操作系统将具有 .so
  • 是的,但不是没有相当于 Windows 操作系统的——例如Wine 或运行 Windows 的 VM。但这个问题似乎很混乱;你能告诉我们更多关于你想要完成的事情吗?
  • 已添加示例(对于一些误解,请见谅)

标签: haskell dll ffi


【解决方案1】:

如果您尝试加载外部动态库,则必须针对您尝试加载它的平台对其进行编译。在 Windows 上,它将是一个 DLL 文件,在 Linux 上,它是一个 .so 文件(“共享对象”),在 OSX 上我不知道它会是什么......但是如果你想加载一个基本上包含机器代码,必须针对您要运行的目标平台进行编译。

如果您问“我可以让 Haskell 根据我运行的平台确定需要加载哪个文件”,那是另一个问题... ;-)

【讨论】:

    猜你喜欢
    • 2023-02-04
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2013-08-13
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多