2

Haskellから呼び出したいpdflib_py.soライブラリがあります。ヘッダーファイルがありません。ご覧のとおり、lib の名前は標準の libbla 形式ではありません。

haskell からアクセスするにはどうすればよいですか?

c2hs チュートリアルに従いました。しかし、ヘッダーファイル(私は持っていません)が必要であり、ghcにはライブラリ名がlibbla形式である必要があります。もちろん、pdflib_py.so の名前を libpdfpy.so に変更することもできますが、実際に試してみましたが (うまくいきませんでした)、その名前のために haskell からライブラリにアクセスできないと仮定するのはばかげています。私は確かにここに何かが欠けています。

ここからpdflibライブラリをダウンロードできますhttp://www.pdflib.com/download/pdflib-family/pdflib-8/

c++、java、php、python などのバンドルがあります。

C++ ライブラリではなく Python ライブラリを使用しないのはなぜですか? さて、c++ ライブラリ libbpdf.a は g++ でコンパイルする必要があります。また、haskell は g++ では動作しません。最初に C ラッパーを作成する必要があります。幸いなことに、誰かがすでに私のためにそれをしてくれました。それが pdflib_py.so です - libpdf ライブラリの AC ラッパーです。

では、標準以外の名前で haskell のヘッダー ファイルのないライブラリを使用するにはどうすればよいでしょうか。

4

1 に答える 1

4

あなたのアプローチが正しいとは思いません。g++ を使用して pdflib を共有ライブラリにコンパイルし、それに対してリンクする必要があります。彼らが提供するC++ライブラリはすでに「extern C」ラッパーを使用しているため、エクスポートされたシンボルは期待どおりに正確になります。

要約すると、次の解決策を提案します。

  1. C++ バンドルをダウンロード
  2. g++ でコンパイルして共有 .so ライブラリを作成する
  3. バンドルのヘッダー .h ファイルを使用して Haskell バインディングを作成する
  4. Haskell コードを .so ライブラリにリンクする
于 2012-04-15T21:59:03.943 に答える