擅长:python、mysql、java
<p>cython的诀窍在于使用关键字<a href="http://docs.cython.org/src/userguide/external_C_code.html#using-cython-declarations-from-c" rel="noreferrer" title="Using Cython Declarations from C"><strong>public</strong></a></p>
<pre><code>cdef public double cython_function( double value, double value2 ):
return value + value2
</code></pre>
<p>然后命令<code>cythonize <your_file.pyx></code>和<code><your_file.c></code>将创建可以包含的头<code><your_file.h></code>。
或者,您可以自己创建标题:</p>
<pre><code>#ifdef __cplusplus {
extern "C"
#endif
double cython_function( double value, double value2 );
#ifdef __cplusplus
}
#endif
</code></pre>
<p><strong>更新</strong>:</p>
<p>然后使用Python中的一点覆盖,就可以使用<a href="https://docs.python.org/2/library/ctypes.html#callback-functions" rel="noreferrer" title="Callback functions">ctypes's callback mechanism</a></p>
<pre><code>func_type = CFUNCTYPE(c_double, c_double, c_double)
your_library.set_callback_function ( func_type(user_modules.cython_function) )
</code></pre>