![](/img/trans.png)
[英]can't run “hello world” python code in kivy launcher for android
[英]How can I run a Hello world c++ code using python
我想知道如何創建運行 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++ 函數,你需要創建綁定來擴展 Python 和 ZA7F6F87F87C9FDF183732097.CFCF18 這可以通過多種方式完成,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);
}
您需要創建一個共享的 object 文件 (.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 可以用來做一些非常神奇的事情,包括公開類、包裝重載函數、公開全局變量和 class 變量以進行讀寫、混合 Python/C++ Z5FED3411FAF832274EF1F040028 如果您正在尋找 go,我建議您閱讀這些文檔並了解 API。
作為將 C++ 代碼編譯到單獨的程序中並執行該程序的替代方法,您還可以使用 cppyy ( http://cppyy.org ) 直接在相同的程序中運行 ZF6F87C9FDCF8B3C3F07F93F1EEIT8712 代碼,
例子:
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。
確保您擁有正確的權限
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.