0

kodi で python から呼び出せる c 拡張機能をコンパイルする必要があります。誰でも関連する手順をリストしてください。私は実際にc拡張機能をクロスコンパイルしたと思いますが、kodiでは機能しません.

4

1 に答える 1

0

具体的な手順を説明できなくて申し訳ありませんが、Kodi-Android 用のバイナリ モジュールをビルドするのは簡単な作業ではありません。私が知っていることは次のとおりです。

  • Python.hKodi の組み込みインタープリターに使用される 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 は完全に混乱しています。

于 2016-09-12T09:01:38.347 に答える