Windows で cabal を介して Haskell GD パッケージをインストールすると (MinGW を使用)、次の警告が表示されます。
Warning: resolving _gdImagePtrDestroyIfNotNull by linking to _gdImagePtrDestroyIfNotNull@4
Warning: resolving _gdImageCopyRotated90 by linking to _gdImageCopyRotated@36
Use --enable-stdcall-fixup to disable these warnings
Use --disable-stdcall-fixup to disable these fixups
これらはまさに gd-extras で定義されている関数であることに注意してください。
次に、gd を使用する Haskell プログラムを実際にコンパイルすると、次のエラーが発生します。
Linking Main.exe ...
[...]\cabal\gd-3000.7.3\ghc-7.4.1/libHSgd-3000.7.3.a(Internal.o):fake:(.text+0x2211):undefined reference to 'gdImageCopyRotated90'
[...]\cabal\gd-3000.7.3\ghc-7.4.1/libHSgd-3000.7.3.a(Internal.o):fake:(.text+0x500a):undefined reference to 'gdImagePtrDestroyIfNotNull'
[...]
collect2: ld returned 1 exit status
これを修正する方法がわかりません — 機能させるためにさらに多くの問題があったため、この時点に到達するのにすでに何年もかかりましたが、これが最後のハードルのようです. stdcall fixup を有効/無効にし、これらの関数が定義されているファイルを変更しようとしました (gd-extras が潜在的な問題と思われるため) が、問題は解決していません。
助けてくれてありがとう。