0

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 が潜在的な問題と思われるため) が、問題は解決していません。
助けてくれてありがとう。

4

1 に答える 1

1

ライブラリを指す明示的なリンカ フラグを ghc に渡す必要があります。Haskell GD ライブラリは自動的にリンクされますが、ghc に通知しない限り dll もリンクされません。stdcall-fixup エラーは、ここではニシンです。

于 2013-02-05T01:19:16.637 に答える