問題タブ [c2hs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - c2hs は typedef と関数の両方をバインドします
C の関数の haskell バインディングを適切に作成しようとしていますが、これは 2 つのファイルに分割されています。
file1.h:typedef const char* fmi2GetTypesPlatformTYPE(void);
file2.h:__declspec(dllexport) fmi2GetTypesPlatformTYPE fmi2GetTypesPlatform;
これを Haskell で一致させるために、同様の構造を作成しましたが、ここが問題です。
file1.chs:type fmi2GetTypesPlatformTYPE = {#type fmi2GetTypesPlatformTYPE#}
この型を使用して Haskell 関数ポインタを作成するにはどうすればよいですか? でファイルをインポートしまし{#import file1 #}たが、最後の部分を完了する方法がわかりません。
haskell - c2hs を使用した Cabal ビルドで .chs モジュールが見つからない
私は c2hs を試しており、共有ライブラリの小さな例を Cabal でコンパイルして開始したいと考えていました。
cabal ファイルの次の関連セクションがありますtest.cabal。
次にソース。src/Dummy.hs:
ファイル内src/Test.chs
そして、( cabal configure && cabal build -v) をコンパイルしようとすると、次のエラー メッセージが表示されます。
エラーの原因を教えてください。私は何が欠けていますか?
haskell - Cabal のインストール gtk が失敗する
cabal 経由で gtk をインストールしようとしていますが、ビルド時に次のタイプのエラーが発生します。
このパッケージをインストールするには、「gtk2hsC2hs」が必要です。タイプ エラーは.chsファイルにあり、おそらく gtk2hsC2hs ツールから生成されます。これは gtk2hsC2hs の既知の問題ですか? 他の誰かがこのパッケージをビルドできましたか? 解決策を知っている人はいますか?
Mac OS X Yosemite (10.10.4) を使用しています。
を実行したcabal updateので、すべてのパッケージが最新のようです。また、ハックから入手できる古いバージョンをいくつかビルドしようとしましたが、同じエラーが発生します。
編集
生成されたファイルのエラーはすべて、gtk2hsC2hs によって生成される FFI インポートを処理しているようです。ファイルの下部に、私は取得しています
と一貫して混同しているようPtr()ですMaybe DrawWindow。では、生成された型がPtr()間違っているのでしょうか、それとも使い方が間違っているのでしょうか?
haskell - 動的ラッパーに ForeignPtr 引数を使用しようとするとエラーが発生します
c2hs を使用して C ライブラリをラップしようとしています。次のように Haskell でマッピングした不透明な C 構造体があります。
ファイナライザーで自動的にクリーンアップできるように、外部ポインターを使用しました。それはすべてうまくいくようです。ただし、次のような関数ポインターをラップしたいと思います。
私の Haskell コードは次のようになります。
ただし、コンパイルすると、次のエラーが発生します。
このエラーの最善の解決策についてのアイデアはありますか? 私の最初の考えは、unsafeForeignPtrToPtr単に foo ポインターに変換するために使用する必要があるということですが、これを行う方法や「ラッパー」に配置する場所がわかりません。
手がかりはありますか?
haskell - Haskellでコールバックを使用するC関数を呼び出す方法は?
を使用して次のC関数を呼び出そうとしています。Haskellc2hs
私はc2hsバインディングの宣言に慣れておらず、問題を抱えています。
これは私が試したことです:
ただし、このコードのコンパイル中に次のエラーが発生します。
Ptrどの部分が欠けているか、ここがわかりませんFunPtr。rdKafkaConfSetRebalanceCbまた、全体を次のようにラップしようとしましたFunPtr:
コンパイルしても意味があるかどうかはわかりません...しかし、この関数の使用方法がわかりません。
今では、呼び出す関数がなく、関数へのポインターだけであると不平を言っています(そのFunPtrラッピングのため)。
上記の署名Cに対してバインディングを正しく行う方法を教えていただけますか?C
haskell - C2HS マーシャリング ダブル ポインター
次のような関数がある場合:
次の署名を持つ Haskell バインディングを生成する C2HS を取得する方法はありますか?
これが私がこれまでに得ることができるものです:
そして、それは私が得る方法で機能します
しかし、どうすればそれを返すことができますかIO (SomeTypeFPtr, String)
(またはエラーを表すため) IO (Either String SomeTypeFPtr))?String
結果の型を変換する代わりに、別のマーシャラーを使用/作成する必要があるpeekと思いますが、その方法がよくわかりません。
c - C enum の大きな c2hs 推定サイズ
Storable(c2hs を使用して) 5 つのオプションを持つ C 列挙型のインスタンスを書き込むと、{# sizeof #}マクロは 4 (つまり 4 バイト) を返します。3ビットで十分なのに、これは非常に無駄ではありませんか?これはメモリワードのサイズに依存しますか?
c - inline-c : "`Type` は外部呼び出しでマーシャリングできません"
設定
c2hs によって Haskell にレンダリングされた AC 列挙型で、Storable正しくコンパイルされるインスタンスを備えています ( TypesC2Hs.chs)。inline-cこれを非修飾で、コンテキスト ( )に割り当てたモジュールにインポートしますInternal.hs。.hsc2hs によって生成されたモジュールと、C 呼び出しをラップする準引用符を保持するもう 1 つのモジュールInternal.hsによってインポートされたモジュールの両方。InlineC.hsinline-c
質問
InlineC.hsこの型をマーシャリングできないと不平を言います:
何が起こっている?inline-cこのタイプのエラーが表示されるのはこれが初めてです。
直接逆参照する必要のない他のタイプ、たとえばnewtype DM = DM (Ptr DM) deriving Storable、上記のアプローチで問題なく動作することに注意してください。
前もって感謝します
タイプC2Hs.chs
内部.hs
InlineC.hs
haskell - c2hs を使用しているときに「シンボル X がここに収まりません」というエラーをデバッグするにはどうすればよいですか?
私はc2hsを使用するのが初めてで、この問題を抱えています。
これのデバッグを開始する方法がわかりません。Google 検索や GitHub の問題を調べても何も見つかりませんでした。
どこから始めればよいですか? また、役立つリソースは何ですか?
前もって感謝します。