2011-07-01 5 views
2

私はPythonプログラムと動的にリンクする必要のあるdll/soファイルとして配布されているAPIを使っています。これを達成するために、私はCythonを使用したいと思います。Cython:dll/soとの動的リンク

私はこれまで、dllと静的にリンクすることができました。これはうまくいきますが、APIには4つの異なる味があり、理論的には無限に多くなり、ユーザーは任意の名前(プラグインシステムのようなもの)でコンパイルできるはずです。そのため、私はちょうど1つのライブラリに静的にリンクするso/pxdファイルを作成することはできません。

私が必要とするのは、so/dllの名前をCythonコードに渡して、それを "インポート"できるようにすることです。私はこれがctypes.cdll.LoadLibrary経由でctypesで行うことができることを知っていますが、Cythonではこれが可能ですか?これを行うにはctypesを使用する必要がありますか?

答えて

2

私はここでCモジュールを書くことについて話していると仮定します。もしそうなら、できます。私はWindows上で同等のものは何か分からないが、Linuxではdlopenや友人を使うことができる。それのためのマニュアルページとそれを文書化するいくつかのWebサイトがあります。このリンクを試してみてください。 "http://linux.die.net/man/3/dlopen"これは、ページの一番下に良い例を示しています。これはctypesと同じことをしていますが、実際にはこれはctypesが使用するものでさえあるかもしれません。

関連する問題