如何运行Hello world c++;使用python编写代码 < P>我想知道如何创建一个运行C++代码的Python脚本。

如何运行Hello world c++;使用python编写代码 < P>我想知道如何创建一个运行C++代码的Python脚本。,python,c++,Python,C++,我确实找到了一些关于子流程模块的讨论,但它用于运行命令 我确实找到了一些关于Boost和Swig的讨论,但作为一个初学者,我不知道如何使用它们 测试子流程: import subprocess subprocess.call(["g++", "main.cpp"],shell = True) tmp=subprocess.call("main.cpp",shell = True) print("printing result") print(tmp) 谁能帮帮我吗 您可以使用python的.o

我确实找到了一些关于子流程模块的讨论,但它用于运行命令 我确实找到了一些关于Boost和Swig的讨论,但作为一个初学者,我不知道如何使用它们

测试子流程:

import subprocess
subprocess.call(["g++", "main.cpp"],shell = True)
tmp=subprocess.call("main.cpp",shell = True)
print("printing result")
print(tmp)

谁能帮帮我吗

您可以使用python的.os模块来运行os命令

import os
myCmd1 = 'ls -la'
os.system(myCmd)
您的命令可以是'g++main.cpp second.cpp-o run',然后您可以使用相同的机制调用
/run
shell


确保您拥有正确的权限

一个简单的示例是创建
.cpp
文件:

// cpy.cpp
#include <iostream>

int main()
{
    std::cout << "Hello World! from C++" << std::endl;
    return 0;
}
python
>>> import hello
>>> hello.print_hello()
Hello, World! from C++
然后在终端中,运行Python脚本:

// cpy.py
import subprocess
cmd = "cpy.cpp"
subprocess.call(["g++", cmd])
subprocess.call("./a.out")
~ python cpy.py
~ Hello World! from C++
编辑:

如果您希望从Python调用C++函数,则需要创建绑定来用C++来扩展Python。这可以通过多种方式实现,Python文档提供了一个完整的原始实现,说明了如何在简单的情况下实现,但也有一些库,如pybind和boost.Python,可以为您实现这一点

boost.Python的一个示例:

// boost-example.cpp
#include <iostream>
#include <boost/python.hpp>

using namespace boost::python;

int printHello()
{
    std::cout << "Hello, World! from C++" << std::endl;
}

BOOST_PYTHON_MODULE(hello)
{
        def("print_hello", printHello);
}
在创建
hello.so
文件的同一目录中:

// cpy.cpp
#include <iostream>

int main()
{
    std::cout << "Hello World! from C++" << std::endl;
    return 0;
}
python
>>> import hello
>>> hello.print_hello()
Hello, World! from C++
Python可以用来做一些非常神奇的事情,包括公开类、包装重载函数、公开用于读写的全局变量和类变量、混合Python/C++继承继承体系结构,所有这些都可以显著提高性能。
我建议通过文档和了解API,如果你想沿着这条路线走下去。

< P>作为编译C++代码到单独程序并执行它的一种选择,你也可以使用CPPYY()直接在JSP中通过同一程序运行C++代码。 例如:

import cppyy
cppyy.cppdef('''
void hello() {
    std::cout << "Hello, World!" << std::endl;
}''')
cppyy.gbl.hello()   # calls the C++ function 'hello' defined above
导入cppyy
cppyy.cppdef(“”)
void hello(){

std::还值得测试cpp文件和可执行文件的年龄。如果可执行文件比cpp文件更新,那么重新编译cpp文件就没有什么意义了。仔细想想,这假设了稳定的单调时间。你能给我举个例子吗?或者如果你知道我在哪里可以找到简单的教程,请!@ITWorld this sp特殊情况不是你可能找到教程的那种东西。你应该能够找到一个运行外部进程的通用教程,你必须从那里适应。当你说Run C++代码时,我假设你想要运行C++编译代码。我的答案描述了你可以编译和运行代码。这需要GNU G+CO。mpiler和unix环境。我建议的解决方案只能在unix或bash支持系统中运行。基本上,/表示“运行此脚本”。您可以运行不同的脚本:例如./hello,其中./hello是hello.cpp的g++的输出(您可以使用以下命令编译它:g++-o hello.cpp)C实际上有很多的特性,比如Python没有很多的特性,比如指针,直接访问系统文件和文件描述符等。编译C++源文件时,输出是二进制的。默认情况下,代码> G++/<代码>将写入到<代码> A.Out<<代码>,除非你用“代码> -O < /Cord>选项指定一个不同的目标。o不执行C++源文件本身。示例:<代码>子进程。调用(“A.OUT”,shell = true)< /C> >还应该检查代码“G+++< /COD>”的返回代码,以确保它成功。如果有错误,输出将不存在,或者如果它将来自以前成功编译。Python将永远不会直接执行C++代码。(嗯,我想,有库绑定)…所以你在用Python写一个脚本来自动化C++编译/运行循环?在实际中,你实际上是想完成什么?Python不能直接运行C++,你必须为C++创建解析器和解释器。它可以执行C++编译成机器代码(.exe文件)。你已经完成了。你用C++编写代码,用<代码> G++Meal.CPP < /C> >你应该在文件<代码> Auth中获取机器代码,现在你可以执行它:代码>子进程。
。如果脚本也使用命令行,为什么还要在命令行上编译?@LightnessRacesinOrbit确定thing@ITWorld我添加了一个boostpython示例,以look@jackw11111谢谢您的示例,但是boost文件夹必须在我的项目文件夹中,或者在哪里?因为我确实将它放在了“C:\Python36\Lib\site packages\boost”中但我在“包含”上有一个错误,它说它没有找到file@ITWorld在编译类似
g++-ic:\Python36\Lib\site-packages
等文件时,可能需要链接到头文件所在的文件夹。。。