在 Windows 下构建 DLL 时,我得到以下输出:

Linking main.exe ...
Warning: resolving _findPeaksWrapper by linking to _findPeaksWrapper@16
Use --enable-stdcall-fixup to disable these warnings
Creating library file: HSdll.dll.a
Use --disable-stdcall-fixup to disable these fixups

我不清楚应该在哪里放置 --enable-stdcall-fixup 标志。将它放入我的 .cabal 文件的 ghc-options 字段会产生 GHC 错误,而将它放入 cc-optionsld-options 似乎没有做任何事情(仍然显示警告)。这面旗帜应该去哪里?

最佳答案

谷歌搜索表明 --enable-stdcall-fixup 是 ld 的一个选项。 cabal 的最终链接步骤可以通过几种不同的途径发生,但在您的情况下,显然是

Cabal -> ghc (link step) -> gcc -> ld

所以要匹配这个,你必须指定
ghc-options: -optl-Wl,--enable-stdcall-fixup

10-08 12:35