如何使用python运行Hello world c ++代码
How can I run a Hello world c++ code using python
我想知道如何创建一个运行 c++ 代码的 python 脚本。
我确实找到了一些关于子流程模块的讨论,但它用于运行命令 我确实找到了一些关于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++函数,则需要创建绑定以使用 C++ 扩展 Python。这可以通过多种方式完成,Python 文档对如何针对简单情况进行了彻底的原始实现,但也有 pybind 和 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 标头和库。示例可能如下所示:
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++继承层次结构,所有这些都具有显着的性能提升。 如果您想走这条路,我建议您浏览这些文档并了解 API。
作为将C++代码编译到单独的程序中并执行该程序的替代方法,您还可以使用 cppyy (http://cppyy.org( 通过 JIT 在同一程序中直接运行C++代码。
例:
import cppyy
cppyy.cppdef('''
void hello() {
std::cout << "Hello, World!" << std::endl;
}''')
cppyy.gbl.hello() # calls the C++ function 'hello' defined above
您可以使用 python 的 .os 模块来运行 os 命令。
import os
myCmd1 = 'ls -la'
os.system(myCmd)
你的命令可以是"g++ main.cpp second.cpp -o run",然后你可以使用相同的机制来调用./run
shell。
确保您拥有正确的权限
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 运行Qt时处理退出代码0xC0000135 hello world
- 如何使用python运行Hello world c ++代码
- 我正在尝试在Visual Studio 2013中编写我的第一个"Hello World"代码。为什么我会收到"IntelliSense: no operator message"和"error C2
- 代码::块 - Linux - 打印"Hello World",即使它不在"main.cpp"文件中
- 我正在尝试将 s1 中的所有字符更改为"x"。但是,当我运行代码时,编译器刚刚打印出"hello world"11次
- 为什么为"Hello World"程序生成的代码对C++比为 C 生成的代码大 10 倍?
- Visual Studio 2010 在尝试运行简单的"Hello World"代码时崩溃?
- 命令提示符上不会出现简单的"Hello World"代码