kodi で python から呼び出せる c 拡張機能をコンパイルする必要があります。誰でも関連する手順をリストしてください。私は実際にc拡張機能をクロスコンパイルしたと思いますが、kodiでは機能しません.
1 に答える
具体的な手順を説明できなくて申し訳ありませんが、Kodi-Android 用のバイナリ モジュールをビルドするのは簡単な作業ではありません。私が知っていることは次のとおりです。
Python.h
Kodi の組み込みインタープリターに使用される Python ソースから使用する必要があります。libkodi.so
必要な Python シンボルを見つけるには、リンクする必要があります。- これは重要です: Kodi-Android のバイナリ結節のインポート メカニズムが壊れています。
使用する場合:
import foo
Kodi-Android は、共有ライブラリ ファイルの検索時libfoo.so
に自動的に追加され、インポートが失敗するため、実際に検索します。名前はモジュール宣言と一致する必要があるため、lib-
単純な名前変更foo.so
は役に立ちません。次に例を示します。libfoo.so
PyMODINIT_FUNC
initspam(void)
{
(void) Py_InitModule("libfoo", SpamMethods);
}
モジュール宣言"libfoo"
がファイル名と一致する場合のみlibfoo.so
(「lib-」部分は Kodi-Android では必須です)、他に落とし穴がなければ、インポートは成功するはずです。私が言ったように、それは簡単な仕事ではありません。
ところで、純粋な C 共有ライブラリを構築して ctypes を使用することができます。この壊れた Python-C モジュールのすべてを台無しにしないでください。当然、ライブラリ名は「lib-」で始まる必要があります (これも Kodi-Android では必須です) が、ライブラリに外部依存関係がない場合は、ctypes を介して共有ライブラリを使用する方が簡単です。
UPD :許可の問題を忘れていました。Android では、どこからでもバイナリ モジュールをインポートできません。Kodi の一時ディレクトリは機能することが知られていますが、常に機能するとは限りません。繰り返しますが、バイナリ Python モジュールに関する限り、Kodi-Android は完全に混乱しています。