我正在尝试将LMDB C API与 Cython 一起使用。
我想从头文件中导入以下定义:
typedef struct MDB_env MDB_env;
int mdb_env_create(MDB_env **env);
所以我创建了一个.pxd
文件:
cdef extern from 'lmdb.h':
struct MDB_env:
pass
int mdb_env_create(MDB_env **env)
我在 Cython 脚本中使用它:
cdef MDB_env *e
x = mdb_env_create(&e)
这段代码编译得很好,但如果我运行它,我会得到:
ImportError: /home/me/.cache/ipython/cython/_cython_magic_15705c11c6f56670efe6282cbabe4abc.cpython-36m-x86_64-linux-gnu.so: undefined symbol: mdb_env_create
这既发生在 Cython .pyx
+.pxd
设置中,也发生在 IPython 中键入的原型中。
如果我导入另一个符号,比如一个常量,我可以访问它。所以我似乎正在查看正确的头文件。
我没有看到我的语法和文档之间有任何差异,但我显然做错了什么。有人可以给我一个提示吗?
谢谢。