Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.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
在C+中嵌入Cython+; 我试图在CC++项目中嵌入一段Cython代码,这样我就可以编译一个不依赖Python 2.7的二进制文件(这样用户就可以运行可执行文件而不用安装Python)。Cython源代码不是纯Cython:其中还有Python代码_Python_C++_Cython - Fatal编程技术网

在C+中嵌入Cython+; 我试图在CC++项目中嵌入一段Cython代码,这样我就可以编译一个不依赖Python 2.7的二进制文件(这样用户就可以运行可执行文件而不用安装Python)。Cython源代码不是纯Cython:其中还有Python代码

在C+中嵌入Cython+; 我试图在CC++项目中嵌入一段Cython代码,这样我就可以编译一个不依赖Python 2.7的二进制文件(这样用户就可以运行可执行文件而不用安装Python)。Cython源代码不是纯Cython:其中还有Python代码,python,c++,cython,Python,C++,Cython,我正在使用以下脚本(setup.py)中的distutils编译Cython代码: 然后,我使用python setup.py build\u ext--inplace运行脚本。这将生成两个文件:test.c、test.h、test.pyd和一些库文件:test.exp、test.obj和test.lib P>导入C++的适当步骤是什么?我通过在编译过程中包含test.c和test.h以及在链接过程中包含test.lib使其工作 然后,我可以在发出命令后调用Cython函数 Py_Initia

我正在使用以下脚本(
setup.py
)中的
distutils
编译Cython代码:

然后,我使用
python setup.py build\u ext--inplace
运行脚本。这将生成两个文件:
test.c
test.h
test.pyd
和一些库文件:
test.exp
test.obj
test.lib

<> P>导入C++的适当步骤是什么?我通过在编译过程中包含
test.c
test.h
以及在链接过程中包含
test.lib
使其工作

然后,我可以在发出命令后调用Cython函数

Py_Initialize();
inittest();
<我的C++代码> < /P> 问题在于,无论是在编译期间(例如在
test.h
)还是在链接期间,Python都有许多依赖性。底线是为了运行可执行文件,必须安装Python(否则我会在缺少
python27.dll
时出错)

我采用这种方法的方向正确吗?有这么多的选择,我只是非常困惑如何继续。从概念上讲,如果我希望整个过程独立于Python,那么为什么要调用
Py\u Initialize()
,这也没有意义。此外,这显然是一个低级别的Cython嵌入,但这正是我让它工作的方式


如果有人对此有任何见解,我们将不胜感激。

Cython无法使Python代码独立于Python;它调用Python库以处理Python类型和函数调用。如果希望程序独立于Python,则不应编写任何Python代码。

(这主要是对 这说明您无法消除Python依赖关系)

如果您不想强迫用户自己安装Python,您可以将python27.dll与应用程序捆绑在一起(请阅读许可协议,但我几乎可以肯定这没问题!)


但是,只要在代码中执行
导入
,就必须绑定相关模块,或者确保它(以及它导入的任何东西!)是用Cython编译的。除非你在做一些非常琐碎的事情,否则你可能会花很多时间去追逐依赖关系。这包括大部分标准库。

好的,那就差不多解决了。谢谢你的快速回答。这不是真的,考虑一下这个链接:“太空行走:你确实注意到它与Python库链接,对吧?”
Py_Initialize();
inittest();