私はC++で作成したパッケージを既に共有ライブラリにコンパイルしています。どのようにして、Pythonはプリコンパイルされた共有ファイルを認識するようにしますか?
自分のmain関数でリンクすると、initfooを直接呼び出すことでパッケージを初期化することができ、すべて正常に動作します。
は、どのように私はパッケージとしての私の共有ライブラリを認識するためのpythonを得るか、私はちょうど入力することができます。
import foo
は、通常のPythonインタプリタから実行していますか?
私はファイルをコンパイルするためにdistutilsを使用することに興味はありません。コンパイルは通常のcmakeビルドシステムの一部でなければならないからです。私は共有ライブラリをロードするのに必要なパッケージファイルを作成するだけです。
更新: 私は今それを働かせます。問題はcmakeが共有ライブラリ名のlib接頭辞をデフォルトにしていることでした。この問題を解決するには、
SET_TARGET_PROPERTIES(foo PROPERTIES PREFIX "")
を必要とし、あなたがinitfoo
シンボルエクスポート(ノートで共有ライブラリをお持ちの場合はMac OS X
SET_TARGET_PROPERTIES(foo PROPERTIES SUFFIX ".so")
「distutils」は、自分でやるのが面倒なので、特に存在します(http://python-history.blogspot.com/2009/03/dynamically-loaded-modules.htmlを参照) distutils'(恐らくcmakeビルドに必要な場合は2回)を完全に無意味にするでしょうか? – delnan
それは問題ではありません。私のコマンドは、多くのC++関数を呼び出します。さらに、Mac OS Xでは、結果として生じる共有ライブラリは、他のすべての共有ライブラリとリンクする必要があります。 – Juan