在 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-options
或 ld-options
似乎没有做任何事情(仍然显示警告)。这面旗帜应该去哪里? 最佳答案
谷歌搜索表明 --enable-stdcall-fixup
是 ld 的一个选项。 cabal 的最终链接步骤可以通过几种不同的途径发生,但在您的情况下,显然是
Cabal -> ghc (link step) -> gcc -> ld
所以要匹配这个,你必须指定
ghc-options: -optl-Wl,--enable-stdcall-fixup