問題タブ [ffi]
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.
external - %はOCamlの外部宣言で何を意味しますか?
OCaml 標準ライブラリの多くのexternal
宣言には、関数名の先頭に % があります。たとえば、次のように定義されていますint_of_float
。
「%」は何を意味しますか?
haskell - haskellで構造を「解凍」する方法
私は最近この問題に遭遇し、解決策を見つけましたが、より良い(またはより慣用的な)解決策があるかどうか疑問に思っています。
私は色の構造を持っています:
そして、実際にはカイロから、色成分を個別に渡したい関数があります。
setSourceRGB
したがって、をとらないので、このデータ構造を何らかの方法で「解凍」する必要がありRgb
ます。私は2つの方法を見つけました。Rgb
1つは、 :の内容を適用する関数を定義することです。
それから私はすることができます:
私が思いついたもう1つの方法は、ケースを使用してインラインラムダ式を実行することです。これは、別の関数を定義する必要がないことを意味します。
私はこれに完全に満足しているわけではありませんが、どういうわけか、いくつかの値を渡すためだけに関数を適用することは正しくないようです。私はそれを好転させてRgb
、の正しいタイプに「変換」できるようにしたいと思いsetSourceRGB
ます。残念ながら、機能を持つことは不可能だと私には思えます
に渡すことができますsetSourceRGB
。おそらくapplyRgb
最善の解決策ですが、それを次のように表現できるより良い方法があるかどうか疑問に思っています。
c++ - まともな C++ FFI によるハッキング可能なスキームの実装
私が試したのは、scheme48、chicken、gambit、clojure です。
読み取り可能 (実装自体) で、適切な C++ ffi と適切なデバッグ サポートを備えたスキームの実装を探しています (したがって、例外が発生した場合は、再帰的な repl にポップする必要があります)。
人々はどのような提案をしていますか?
java - Java内からHaskell関数を呼び出すための最良の方法
私はJavaプログラム内からHaskell関数を実行する効率的な方法を探しています。exec()を使用してGHCと対話することを検討しましたが、より良いメソッドがあるはずです。
erlang - erlang "erl_nif" 機能
私は主にポート ドライバーを介して Erlang とやり取りしてきましたが、erl_nif
機能の出現により、もうポート ドライバーに投資する必要があるかどうか疑問に思っています。
erl_nif
機能がブームになるか、それとも崩壊するFFI
か?
ruby - Ruby FFI Struct レイアウトの繰り返し
Rubyのacライブラリの関数にアクセスするために、本当に素晴らしいruby ffiライブラリを使用しています。
Ruby FFI::Struct のレイアウトを反復処理する方法はありますか?
FFI::構造体の例:
これは機能していないようですが、以下の疑似コードのようなものです:
c - 「外部関数インターフェイス」を使用して Go から C を呼び出す方法
Go の「外部関数インターフェイス」を使用して C 関数を呼び出すにはどうすればよいですか?
このインターフェイスはFAQで言及されていますが、ドキュメントの他の場所で言及されているのを確認できません。
haskell - Compiled Haskell libraries with FFI imports are invalid when imported into GHCI
I am using GHC 6.12.1, in Ubuntu 10.04
When I try to use the FFI syntax for static storage, only modules running in interpreted mode (ie GHCI) work properly. Compiled modules have invalid pointers, and do not work. I'd like to know whether anybody can reproduce the problem, whether this an error in my code or GHC, and (if the latter) whether it's a known issue.
I'm using sys_siglist
because it's present in a standard library on my system, but I don't believe the actual storage used matters (I discovered this while writing a binding to libidn). If it helps, sys_siglist
is defined in <signal.h>
as:
I thought this type might be the problem, so I also tried wrapping it in a plain C procedure:
However, importing that doesn't change the result, and the printf()
call prints the same pointer value as show siglist_a
.
My suspicion is that it's something to do with static and dynamic library loading.
Update: somebody in #haskell suggested this might be 64-bit specific; if anybody tries to reproduce it, can you mention your architecture and whether it worked in a comment?
Code as follows:
--
--
I would expect something like this output, where all pointer values identical and valid:
However, if I compile A.hs (with ghc -c A.hs
), then the output changes to:
ocaml - それを使用してClibとOCamlexeをコンパイルし、すべてocamlfindを使用します
私はocamlfind
、CライブラリとそのCライブラリを使用してOCaml実行可能ファイルをコンパイルするために使用する方法を理解しようとしています。
かなりばかげたサンプルファイルのセットをまとめました。
ライブラリをコンパイルする方法は次のとおりです。
作成したライブラリを使用できないようですが、次のようになります。
OCamlツールは私にはやや不思議なので、どんなポインタでも大歓迎です。
c - Racket では、別の関数が呼び出された後に関数をエクスポートできますか?
スキームの FFI を使用して libpython へのバインディングを作成しようとしています。これを行うには、python の場所を取得して を作成しffi-lib
、そこから関数を作成する必要があります。たとえば、私はこれを行うことができます:
これで問題ありませんが、関数をエクスポートする方法が思い浮かびません。たとえば、次のようなことができます。
...しかし、どうにかして libpython (link-python によって作成された) への参照をグローバルに保存する必要があります。link-python が呼び出されたら、これらの関数をエクスポートする方法はありますか? 言い換えれば、モジュールを使用している誰かがこれを行うことができるようにしたいと思います:
...またはこれ:
...しかし、これでエラーが発生します:
これどうやってするの?