GNU/Linux >> Linux の 問題 >  >> Linux

Python で C コードを使用できますか?

拡張する必要はありません Python (自明ではありませんが)、ctypes などの外部関数インターフェイスを使用できます .


<ブロック引用>

これらの C 関数または実行可能ファイルを Python で呼び出したい。それは可能ですか?

はい、モジュールとして Python にインポートできる C コードを作成できます。 Python はこれらの拡張モジュールを呼び出します .ドキュメントの例のように、Python から直接呼び出すことができます:

Python コード

import example
result = example.do_something()

C コード

static PyObject * example(PyObject *self)
{
    // do something
    return Py_BuildValue("i", result);
}
<ブロック引用>

C コードをライブラリにしたい場合、つまり、#include と *.o のリンケージを Python で使用することを意味します。その方法または可能性はありますか。

共有ライブラリ *.dll としてビルドします または *.so distutils を使用して調査し、モジュールを配布することもできます。

<ブロック引用>

C コードを実行可能ファイルに書き込む場合、つまりコマンドになる場合、Python で直接呼び出すことはできますか?

*.exe を記述する場合 次に、反対のことを行っています (C から Python を呼び出します)。選択する方法 (exe と共有ライブラリ) は、「Python を使用した C プログラム」 が必要かどうかによって異なります。 または 「C を使用した Python プログラム」 .

<ブロック引用>

また、pythonコードはコンパイルできると聞きましたが、ソースファイルなしでコードを実行できるということですか?出力ファイルはバイナリファイルですか?パフォーマンスは向上しますか?

Python は *.py を読み取ります ファイルに変換し、*.pyc にコンパイルします バイトコード 実行時のファイル。その後、バイトコードは Python 仮想マシンで実行されます。これは、「ソースからバイトコードへの再コンパイルを回避できるため、同じファイルを 2 回目に実行する方が高速である」ことを意味します。 (Python 用語集から) *.py を編集していない場合 ファイル、*.pyc を実行します . *.pyc を配布できます *.py のないファイル ファイルですが、暗号化されておらず、リバース エンジニアリングされる可能性があります。


Linux
  1. GDB を使用して実行中のプロセスをデバッグできますか?

  2. Bash からの Python モジュールのインポート

  3. Ubuntu で Homebrew を使用できますか?

  1. Visual Studio Code で Qt を使用する方法

  2. サービスが実行されているかどうかを確認する Python コード。

  3. TinyCore で APT を使用できますか?

  1. Python2コードをPython3に変換する

  2. Lsでアンカー^$を使用できますか?

  3. Python を使用して WMI を照会する方法 (Linux – Windows)