gpt4 book ai didi

python - 如何使用 python 运行 Hello world c++ 代码

转载 作者:行者123 更新时间:2023-11-30 02:14:06 25 4
gpt4 key购买 nike

我想知道如何创建运行 C++ 代码的 Python 脚本。

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

测试子流程:

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

谁能帮帮我!

最佳答案

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

// cpy.cpp
#include <iostream>

int main()
{
std::cout << "Hello World! from C++" << std::endl;
return 0;
}

还有一个 Python 脚本:

// cpy.py
import subprocess
cmd = "cpy.cpp"
subprocess.call(["g++", cmd])
subprocess.call("./a.out")

然后在终端中,运行 Python 脚本:

~ python cpy.py
~ Hello World! from C++

编辑:

如果您想控制从 Python 调用 C++ 函数,您将需要创建绑定(bind)以使用 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);
}

您将需要创建一个共享对象文件 (.so) 并确保链接适当的 Python header 和库。一个示例可能如下所示:

g++ printHello.cpp -fPIC -shared -L/usr/lib/python2.7/config-3.7m-x86_64-linux-gnu/ -I/usr/include/python2.7 -lpython2.7 -lboost_python -o hello.so

在您创建 hello.so 文件的同一目录中:

python
>>> import hello
>>> hello.print_hello()
Hello, World! from C++

Boost.Python 可用于做一些非常神奇的事情,包括公开类、包装重载函数、公开全局变量和类变量以进行读写、混合 Python/C++ 继承层次结构,所有这些都具有显着的性能提升。我建议通过 these如果您希望沿着这条路线走下去,请参阅文档并了解 API。

关于python - 如何使用 python 运行 Hello world c++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58422804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com