【问题标题】:How do I get Cython to use an object file?如何让 Cython 使用目标文件?
【发布时间】:2023-03-04 13:12:01
【问题描述】:

我使用 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 声明一个外部对象?

附:标签_myfunc 应该是入口点。

【问题讨论】:

    标签: python object assembly nasm cython


    【解决方案1】:

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

    cdef extern:
        void _myfunc()
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多