可以在非Windows操作系统上使用/与Haskell的FFI(外部函数接口)接口的Windows DLL吗?例如,如果我有OSX,我可以使用FFI连接.dll(使用dll函数)吗?
实施例: 我有一个在Windows中编写和编译的my.dll文件。使用Haskell的FFI(外部函数接口),我可以在Haskell中编写一个程序,它将加载my.dll并使用它的函数。问题是:我可以在OSX中编写Haskell程序并通过FFI使用my.dll,还是必须在Windows中编译Haskell程序(因为我想使用my.dll)?
答案 0 :(得分:2)
如果您正在尝试加载外部动态库,则必须针对您尝试加载它的平台进行编译。在Windows上,它将是一个DLL文件,在Linux上它是一个.so
文件(“共享对象”),在OSX上我不知道它会是什么......但如果你想加载一个文件它本质上包含机器代码,必须为要运行它的目标平台进行编译。
如果你问“我可以让Haskell根据我正在运行的平台找出需要加载的文件”,那么这是另一个问题......; - )