我正在寫一些cython代碼,並且遇到了一個奇怪的問題。當我嘗試將一個對象直接從python傳遞給C作爲一個結構體時,cython生成的代碼很好,但是gcc不喜歡代碼輸出並給出了以下錯誤:error: declaration does not declare anything
。這裏是我的測試代碼:Cython錯誤:聲明不聲明任何東西
// cake.h
using Cake = struct CakeStruct {
int a, b, c;
};
void bake(Cake batter);
和用Cython:
# test.pyx
cdef extern from "cake.h":
void bake(Cake batter)
ctypedef struct Cake:
int a
int b
int c
def make_one(batter):
cdef Cake more_batter;
more_batter.a = 5
more_batter.b = 10
print(more_batter.a + more_batter.b)
bake(more_batter)
bake(batter) # <- this line generates bad code
如果你看一下生成的代碼
,壞線看起來是這樣的:
...
Cake; // this is the error
static Cake __pyx_convert__from_py_Cake(PyObject *);
...
我使用cython 0.21直接來自Anaconda和Ubuntu 14.04附帶的gcc 4.8.2。使用cython --cplus test.pyx
和語法檢查通過生成用Cython代碼:
gcc -std=c++11 -fsyntax-only -I`...python include dir...` test.cpp
-
誰能告訴我什麼,我做錯了,我.pyx文件?或者這是一個我絆倒的cython bug?
好極了。謝謝你的幫助! – jeremy 2014-11-23 22:06:02