問題タブ [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.

0 投票する
1 に答える
721 参照

c - openCV を使用した PLT Racket の FFI

PLT Racket を介して Web カメラを制御し、理想的には、OpenCV の C API のいくつかの軽量ラッパー ライブラリを作成したいと考えています。ただし、OpenCV のどのオブジェクト ファイルがライブラリであるかがわからないという点で、少し問題があります。恥ずかしいことです。Python API がどのように機能しているかを調べたところ、モジュールが cv.so ファイルにあることがわかりましたが、バイナリで何を使用すればよいかわかりません。私はMac OSXを使用しています

私はこれを持っています

しかし、「lib-name」として渡すファイルがわかりません。私のopencvのインストールディレクトリには、多数の.dylibファイルを含む../opencv/2.2/libがあります。どれも機能していないようですが、これまでのところ最良の推測です。別のコンパイラ オプションで OpenCV をビルドする必要がありますか?

0 投票する
5 に答える
7996 参照

ruby - RVM 経由で Ubuntu、Ruby 1.9.2 にネイティブ拡張機能を使用する gem をインストールする際のエラー

ffi gem をインストールしようとすると、エラーが発生します。

ネイティブ拡張機能を使用して gem をインストールしているときに、あらゆる種類のエラーが頻繁に発生するため、Ubuntu のインストールに何か問題があると思いますが、何が原因かわかりません。問題の診断に必要な情報を投稿します。

編集: ffi gem (最後の 2 行目) に移動し、6 行目の rake 行を実行すると、「RubyGem rake-compiler が見つかりませんでした」というメッセージが表示されます。

gem i rake-compiler を実行し、再度 rake を実行すると、次のようになります。

アップデート:

これらは私のレーキgemspecです:

最後のものは gem が見える場所ですが、その gemspec は最初のものとは異なり、実行可能ファイルは含まれていません。ただし、長いものをコピーしても問題は完全には解決されません-rake実行可能ファイルが見つからないファイルが表示されます。

0 投票する
1 に答える
488 参照

c - C 関数のラップと呼び出しについて

私はこの中国のブログからこの質問を受け取ります http://chenyufei.info/blog/2011-02-28/wrap-c-function-closure-gcc-nested-function/ 著者は C 言語でクロージャを使用したいと考えています。 GCCにはネストされた関数(およびクロージャー)の機能があることがわかりました。例えば:

しかし、それは一般的な解決策ではありません。create_wrap_function は、 func_t が形式を制限するため、関数形式が固定されています。

ご存じのとおり、Lua にはクロージャがあり、C 関数も呼び出すことができます。私が実装したいのは、呼び出したい関数は foo1 と foo2 で、引数と戻り値の型が異なります。

C クライアントでは、次のように関数を呼び出します。

Do_Lua_Wrap では、foo1 と 1 を Lua 関数に渡し、通常のプロセスと同様に foo1 関数を呼び出します。次に、foo2 と 1 つの char* と 1 つの double 値を Lua 関数に渡し、通常のプロセスと同様に foo2 関数を呼び出します。Lua 関数では、 FILELINEに関する情報をログに 記録し、関数の引数に関する追加のログを書き込むことができます。

しかし、関数 Do_Lua_Wrap を C と Lua で記述する方法がわかりません。可能ですか?

もしよろしければ、アドバイスをいただけないでしょうか?

0 投票する
5 に答える
2495 参照

python - Common Lisp から Python ライブラリを使用する簡単な方法はありますか?

Common Lisp コードを書いているときに本当に恋しいのは、Python ライブラリ (標準ライブラリとサードパーティ モジュールの両方) へのアクセスです。CLPython は、ほとんどのライブラリの使用を妨げる Python 機能の限られたサブセットを提供するため、私にとってはあまり役に立ちません。Common Lisp から Python コードを呼び出して、CPython や PyPy などの Python VM で実行できるようにしたいと考えています。

0 投票する
5 に答える
367 参照

unicode - OpenDBXへのSmalltalkFFI呼び出しのUnicode文字

非ASCII文字を含むいくつかの文字列をデータベース(Postgress)に挿入する必要があります。これが最小限の例です。で「引数を強制できませんでした」というメッセージが表示され<cdecl: long 'odbx_query' (ulong char* ulong) module: 'opendbx'>ます。私が理解していることから、これはFFIエラーであり、呼び出しはデータベースバックエンドに到達しませんでしたが、よくわかりません。

0 投票する
1 に答える
1605 参照

ruby - ruby gem でカスタム c コードを呼び出すために ruby​​ ffi を使用する方法

私が書いた ac 関数を呼び出す ruby​​ gem を作りたいです。例えば:

これは、私の ruby​​gem の ac ファイルにあります。次に、ffi インターフェイスでラップすることにより、Ruby で呼び出すことができるようにしたいと考えています。

ただし、これを設定する方法がわからないため、gem がインストールされたときに c ファイルがコンパイルされてライブラリ (「MyLib」という名前) になり、ffi がライブラリを検出して上記のコードで使用します。 .

誰かがこれを行う方法を知っていますか、またはこれを行うためのより良い方法はありますか? Ruby を拡張する標準的な方法 (The Pragmatic Programmer's Guide の Ruby の拡張セクションで説明されている) を使用したくないことに注意してください。

この質問にとって重要な場合、私は自分の宝石を作るために宝石商を使用しています。

0 投票する
3 に答える
880 参照

ruby-on-rails - タイムアウト、システム タイムアウト、ターミネータが FFI ベースの機能で機能しない

共有ライブラリ関数 (サード パーティ関数) の FFI を介してラッパーを作成しました。この共有ライブラリは、サーバーとの接続を確立しようとします。接続確立中、サーバーに到達できない場合、サードパーティ機能は 3 分間待機します。これを回避するために、レールの呼び出し中に次のタイムアウトを使用しようとしましたが、残念ながら機能しませんでした。

  1. ネイティブ タイムアウト
  2. システムタイムアウト
  3. ターミネーター

注:ターミネーターを使用すると、それによって作成された追加のプロセスが無効なプロセスになりました。

Ruby Enterprise バージョン 1.8 を使用しています

0 投票する
1 に答える
190 参照

ruby-on-rails - Ruby FFI - exit() への C 呼び出しのトラップ

カスタム RPC システムへの FFI バインディングを備えた Rails アプリケーションがあります。残念ながら、C コードはexit()RPC サーバーに接続できないときに呼び出し、Rails アプリケーション全体を終了させます。

exit()Rubyで呼び出しをトラップすることは可能ですか? Cコードを変更する必要はありません。

0 投票する
1 に答える
390 参照

haskell - GHC7のFFIスタブ

いくつかのFFIコードを含むHaskellモジュールをコンパイルしようとしています。以前は、GHC6とカスタムGHC7を備えた古いHaskellプラットフォームで動作し、64ビットバージョンを取得していました。

64ビットバージョンのGHC7を搭載した最新のHaskellプラットフォームにアップグレードすると、動作が停止します。GCCは、GHCが吐き出すスタブファイルに問題があるようです。標準のCファイルを見つけるのに問題があるGHCフレームワークヘッダーを使用しています。これが私が得ている多くのエラーの1つにすぎません:

プラットフォームの32ビットバージョンでも同じ問題があるようです。同じ標準ファイルが通常のGCCコンパイルで正しく機能します。なぜこれが機能しないのですか?

0 投票する
1 に答える
947 参照

ruby - RubyFFI で関数の戻り値として構造体を指定するにはどうすればよいですか?

ライブラリ自体から構造を返すいくつかの関数をロードする必要があります。

RubyFFI の Wiki ページは古くなっているようで、ここで少し迷っています。

を作成するFFI::Struct方法と、それをネイティブ関数の戻り値の型として指定する方法を教えてください。