私はCythonを使用してCライブラリのラッパーを作成しようとしています。Cython:すべてのCの依存関係をコンパイル
私のCルーチンを使用する単純なpyxファイルを作成しました。
cdef extern from "sel.h":
void parse_file(const char *file)
cpdef void main(str file):
file_pybyte = file.encode('UTF-8')
cdef char*c_file = file_pybyte
parse_file(c_file)
sel.c
ファイルは、ファイルの数百を持っているsrc
ディレクトリにあるCライブラリをインポートします。
// sel.c
#include "src/clib/finder.h"
#include "src/clib/core/core.h"
#include "src/clib/encoding/encoding.h"
これらの初期ヘッダファイルには、他にもたくさんのインクルードが含まれています。
Symbol not found: _type_attribute
Expected in: flat namespace
type_attribute
機能がsrc/clib/finder.h
ファイル内にインポートされます:
たび
は、私はエラーを取得していますコンパイルされたライブラリを実行しようとしています。Cライブラリのすべての依存関係を自動的に見つけてコンパイルするにはどうすればよいですか?
マイセットアップの設定は次のようになります。
cythonize([Extension("*",
["lib/*.pyx",
"lib/sel.c",
],
include_dirs=[
'lib/src/clib/',
'lib/src/clib/include', ],
)])
私は設定ですべてのCファイルを一覧表示しようとしましたが、このライブラリは、プラットフォーム固有のファイルをたくさん持っているので、それは動作しません。
はあなたではなくて、それをコンパイルしようとするよりも、とリンク独自のメイクファイルと別のライブラリとして、あなたのCライブラリを処理する方が良いだろうマングルC++の名前を持っていた示す記号で
ましたあなたのPython拡張? – DavidW_
は