如何让Cython使用目标文件?

时间:2014-07-04 18:59:50

标签: python object assembly nasm cython

我使用NASM汇编程序编译一个简单的汇编文件(下面的代码)。然后我将尝试创建此.obj文件,并让Cython将其链接到.pyd文件,以便Python可以导入它。基本上我需要一种方法告诉Cython包含一个.obj文件,以便与其他Cython / Python代码一起使用。

首先,这是我的汇编代码:

myfunc.asm

;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应该是入口点。

1 个答案:

答案 0 :(得分:1)

要从Cython调用_myfunc入口点,您需要声明它:

cdef extern:
    void _myfunc()

在声明之后,您可以在Cython模块中调用_myfunc(),就像它是Python函数一样。当然,您需要按照answer to your other question中的说明将myfunc.obj关联到.pyd