問題タブ [python-cffi]

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 投票する
2 に答える
1706 参照

python-3.x - Python、PyPy、CFFI: 何を使用すればよいですか?

Python で C ライブラリを呼び出す必要がありますが、検討した結果、CFFI がこの種の作業に最も適しているように思われました。ただし、今では、正しく使用しているかどうか完全に混乱しています。PyPy でのみ意図したとおりに動作するように見えるものもあれば、Python3 (私が知る限り、PyPy はサポートしていません) でのみ動作するように見えるものもあります。 )。

CFFI ドキュメントの最も基本的なコード サンプルを次に示します。

このコードを Python3 で実行すると、次のエラーが発生します: TypeError: initializer for ctype 'char[]' must be a bytes or list or tuple, not str

エラーを探したところ、PyPy で昨年 1 月に修正された問題として見つかりました。それで、それが PyPy で動作するかどうかを確認します。万歳!

ただし、すでに 2 番目の例では、問題が逆になっています。

これを PyPy で実行すると、別のエラーがスローされます。

この例では、古いバージョンでは動作しないことが有益に示されているため、CFFI バージョンを確認しました: 1.2.1、すべて問題ありません。

最後に、PyPy の代わりに Python3 を使用して 2 番目の例を実行しました。

Python を初めて使用するので、何を使用すればよいのか、同じドキュメントの例が異なるバージョンの言語でしか実行されない理由がわかりません。もちろん、何か間違った設定をしただけかもしれないという問題 (Linux も初めての場合) や、別のバージョンの python を使用する必要があるという問題はまだあります。誰かがこれに光を当てることができますか?

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

python - Python にロードされた DLL をアンロードする

Windows では、他の DLL をロードする自分で作成した DLL があります。問題は、Matlab で DLL を使用する場合、loadlibraryすべて問題ないことです。calllibunloadlibrary

Python では、 と を使用しようとしましたがctypescffiどちらも同じ結果になりました。DLL を読み込んで関数を呼び出すことはできますが、再び終了することはできません。Python がハングアップし、タスク マネージャーからタスクを終了する必要があります。

ctypes私は電話しようとしました

ここで提案されているように、Pythonで開いているctypesライブラリを効果なしで解放します。さらに、明示的な関数を呼び出して、他の DLL をアンロードしようとしました。

アンロード/ハングしない理由について、ヒントや解決策を誰かに教えてもらえますか?

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

python - CFFI を使用したバッファー プロトコル

Cython ドキュメントのこの例のように、オブジェクトのバッファ プロトコルを公開したいのですが、CFFIを使用してこれを行う必要があり、バッファ プロトコルを公開する例を見つけることができませんでした。

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

python - 構造体を定義するときのpython cffi解析エラー

python-cffiCコードをラップするために使用しようとしています。以下は、呼び出しexample_build.pyをラップする試みを示しています。lstat()

コンパイルpython example_build.pyすると、 の解析エラーが発生しmode_t st_modeます。

マニュアルから与えられた同様の例では、問題はありません。私は何が欠けていますか?ティア。

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

python-c-extension - Python cffiを使用してカプセルからvoidptrを取得するには?

cffi を使用してカプセルの内容を抽出し、 C コードに送信できる voidptr に変換する方法はありますか?

背景情報 - numpy 配列は、非常に便利な構造体、つまりPyArrayInterfaceを含むカプセルを提供できます。PyPy 用のカプセルはまだ存在しないと思うので、答えはおそらくノーですが、将来はすべての python バージョンのカプセルが含まれると信じているので、答えがイエスであることを願っています :)。

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

python - 生成された Windows exe (pyinstaller) は _cffi_backend を読み込めませんでした

Windows7(x64)でpyinstaller(3.0)を使用して実行可能ファイル(x86)を生成しようとしています。cffi とその他の必要なパッケージを pip でインストールしました。コマンド ラインから cffi および _cffi_backend モジュールを正常にインポートできます。

>

生成された実行可能ファイルを実行しようとすると、以下のエラーが発生しました。

ここに完全な起動ログが表示される場合があります。

ちなみに、libcffi ライブラリを mingw でコンパイルして DLL ファイルを取得しました。次に、ライブラリ パスの 1 つにコピーすると、アプリケーションの起動時に再び同じエラーが発生しました。

_cffi_backend ライブラリが存在し、Python パスにあるにもかかわらず、アプリケーションの起動時にロードできなかった理由がわかりません。私はPythonが苦手で、残念ながらこのほぼ2日間で立ち往生しています。提案やガイダンスをいただければ幸いです。

ありがとう。

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

python - Python cffi ライブラリ オブジェクトのイントロスペクションにより、__dict__ オブジェクトが変更される

cffi を使用して、ヘッダー ファイルから列挙型の完全なリストを取得したいと考えています。しかし、奇妙な動作が見られます。オブジェクトを観察することで、基になる の変更を強制しています__dict__:

__dict__クラスで最初に呼び出されるまでは入力されないと思いますgetattr()が、実際の問題は次のとおりです。呼び出しも同じようです。dir()__dict__hasattr()

0 投票する
15 に答える
71929 参照

python - _cffi_backend という名前のモジュールがありません

私の Linux rhel-5 には Python 2.6 があります。pip と必要な CFFI パッケージをインストールしました。サンプル CFFI プログラムを実行しようとすると、次のようになります。

それは言います:

考えられるエラーは何ですか?インストール中に何か見逃しましたか?pip、wheel、pycparser、pytest、cffi をインストールしました。