使用visualc从c调用cython generated.c++

2024-07-08 09:22:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试遵循http://docs.cython.org/src/userguide/external_C_code.html中列出的使用c的cython声明的例子,特别是这样的:“通过使用public关键字声明cython模块中定义的c类型、变量和函数,可以让与该模块链接的c代码访问它们。”

在集成.pyx公司名称:

cdef public double f(double x):
    return x**2-x

cdef public double integrate_f(double a, double b, int N):
    cdef int i
    cdef double s, dx
    s = 0
    dx = (b-a)/N
    for i in range(N):
        s += f(a+i*dx)
    return s * dx

def g(a, b, N):
    return integrate_f(a, b, N)

在用python.exe setup.py build_ext --inplace --compiler=msvc构建了.c、.pyd、.h、.obj、.lib、.exp之后,我能够成功地从python导入并运行integrate.g()。但是,我的新目标是在VS2015的开发人员命令提示符下调用f(double x)和{}。在

按照上面链接的说明,我创建了一个integrate_main.c文件:

^{pr2}$

现在把它整合起来,集成.pyd,积分。h,集成.obj, 集成.lib, 积分.exp坐在同一个目录里。我试图用cl integrate_main.c编译integrate\u main.c,但得到以下语法错误:

...\integrate.h(15): error C2061: syntax error: identifier 'f'
...\integrate.h(15): error C2059: syntax error: ';'
...\integrate.h(15): error C2059: syntax error: '<parameter-list>'
...\integrate.h(16): error C2061: syntax error: identifier 'integrate_f'
...\integrate.h(16): error C2059: syntax error: ';'
...\integrate.h(16): error C2059: syntax error: '<parameter-list>'

我不明白当cython成功地创建了一个.obj和一个importable.pyd时integrate.c怎么会出现语法错误。在


Tags: 模块obj声明returnmainerrorpubliccython

热门问题