我有一个超级基本的测试模块,试图使用Windows DLL:
{-# LANGUAGE ForeignFunctionInterface #-}
module Fface where
import Foreign
import Foreign.C.Types
newtype FFACE = FFACE (Ptr FFACE)
foreign import stdcall unsafe "FFACE4.h CreateInstance"
c_CreateInstance :: CUInt -> IO (Ptr FFACE)
当尝试将其编译成简单的测试程序时,我收到以下错误:
Linking Main.exe ...
.\Fface.o:fake:(.text+0x18): undefined reference to `CreateInstance@4'
collect2.exe: error: ld returned 1 exit status
使用gendef从DLL转储导出列表我发现该函数实际上是以" CreateInstance @ 1925"导出的,但几乎所有其他函数都只是以其普通名称导出而没有@数字的东西。什么是@ 1925,我怎样才能让GHC使用它而不是@ 4?