Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用visualc+;从c调用cython generated.c+;_Python_C_Cython - Fatal编程技术网

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

Python 使用visualc+;从c调用cython generated.c+;,python,c,cython,Python,C,Cython,我一直在尝试按照中概述的示例使用c中的cython声明,具体如下:“通过使用public关键字声明,可以使链接到该模块的c代码可以访问cython模块中定义的c类型、变量和函数:” integrate.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,

我一直在尝试按照中概述的示例使用c中的cython声明,具体如下:“通过使用public关键字声明,可以使链接到该模块的c代码可以访问cython模块中定义的c类型、变量和函数:”

integrate.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\u ext--inplace--compiler=msvc构建.c、.pyd、.h、.obj、.lib、.exp之后,我能够成功地从python导入并运行
integrate.g()
。然而,我的新目标是从VS2015的开发者命令提示符调用
f(double x)
integrate\u f(double a,double b,int N)

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

#include <Python.h>
#include "integrate.h"
#include <stdio.h>

double f() {
    Py_Initialize();
    initintegrate();
    double x = 3;
    Py_Finalize();
    return f(x);
}

double main()
{
printf("%d", f());
return f();
}

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

C不是C++不是C!不要使用C++编译器编译C代码。我知道C不是C++…请从开发人员命令提示符上编译C。那么,为什么要添加C++标签作为一个C问题呢?当你准备好提供答案时,请告诉我这是有用的……1)它是相关的。您应该知道是否添加了语言标记。2) 实际上,msvc++有一个标签;无需添加语言标记。3) 你的态度真好!你是否看过代码<>代码集成?h < /Cord>?c不是C++不是C!不要使用C++编译器编译C代码。我知道C不是C++…请从开发人员命令提示符上编译C。那么,为什么要添加C++标签作为一个C问题呢?当你准备好提供答案时,请告诉我这是有用的……1)它是相关的。您应该知道是否添加了语言标记。2) 实际上,msvc++有一个标签;无需添加语言标记。3) 你的态度真好!您是否查看了
integrate.h
中的代码?
...\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>'