我使用NASM汇编程序编译一个简单的汇编文件(下面的代码)。然后我将尝试创建此.obj
文件,并让Cython将其链接到.pyd
文件,以便Python可以导入它。基本上我需要一种方法告诉Cython包含一个.obj
文件,以便与其他Cython / Python代码一起使用。
首先,这是我的汇编代码:
;http://www.nasm.us/doc/nasmdoc9.html
global _myfunc
section .text
_myfunc:
push ebp
mov ebp,esp
sub esp,0x40 ; 64 bytes of local stack space
mov ebx,[ebp+8] ; first parameter to function
; some more code
leave
ret
我使用nasm -f win32 myfunc.asm
这给了我myfunc.obj
,这是我想要包含在Cython编译的.pyd
中。
我可能完全误导,并且可能有更好的方法来完全做到这一点。是否有一个简单的一行extern
我可以用来从Cython声明一个外部对象?
P.S。标签_myfunc
应该是入口点。
答案 0 :(得分:1)
要从Cython调用_myfunc
入口点,您需要声明它:
cdef extern:
void _myfunc()
在声明之后,您可以在Cython模块中调用_myfunc()
,就像它是Python函数一样。当然,您需要按照answer to your other question中的说明将myfunc.obj
关联到.pyd
。