1

可以是在非 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)?

4

1 回答 1

2

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

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

于 2013-09-18T20:13:27.160 回答