這篇部落格完美解決了我想在 c++ 中呼叫 python 模組的問題,感激不盡!!但是博主寫的不夠詳細,本文在這裡對其進行詳細說明。
在 c++ 中呼叫 python 模組實際上和在 python 中呼叫自定義的 python 模組沒喲什麼區別,因此,先看看在 python 中如何呼叫自定義模組吧!
def
add_num
(a, b):
return a+b
import sys
# 將自定義模組的匯入路徑新增到 sys.path 中
# 可以 print(sys.path) 將 sys.path 列印出來看看新增是否成功
import module_add
print(module_add(1,2))
# 列印出結果 3
在 python 中呼叫非同一目錄下的自定義模組已經成功,那麼在c++中來呼叫自定義的 module_add.py 的主要過程如下:
cmake_minimum_required(version 3.10)
project(page_rotate)
set(cmake_cxx_standard 11)
find_package(pythonlibs required)
add_executable(page_rotate main.cpp)
target_link_libraries(page_rotate $)
#include
#include "python3.6m/python.h"
using
namespace
std;
int main()
#include
#include "python3.6m/python.h"
using
namespace
std;
int main()
cout
<< "get module succeeded."
<< endl;
// 載入函式
pyobject* pv = pyobject_getattrstring(pmodule, "add_num");
if (!pv || !pycallable_check(pv))
cout
<< "get function (add_num) succeeded."
<< endl;
// 設定引數
pyobject* args = pytuple_new(2);
pyobject* arg1 = pylong_fromlong(4);
pyobject* arg2 = pylong_fromlong(3);
pytuple_setitem(args, 0, arg1);
pytuple_setitem(args, 1, arg2);
// 呼叫函式
pyobject* pret = pyobject_callobject(pv, args);
if (!pret)
cout
<< "function called succeeded."
<< endl;
long result = pylong_aslong(pret);
cout
<< "result = "
<< result;
}py_finalize();
return
0;}
執行結果如下:
C 呼叫Python模組
當下,c 與python都是比較熱門的計算機程式語言,他們各有優缺點,如果能讓他們互相配合工作,那是多麼美好的事情,今天我來講解一下如何利用c 來呼叫python。如果讓c 支援呼叫python模組,我們首先需要安裝一些擴充套件,這裡推薦使用ironpython庫。第二步,我們新建乙個c 窗體專案,...
C 呼叫 Python模組
vs2013 python27 x86 1 引入標頭檔案和庫 將python安裝目錄下的include和libs資料夾引入到專案中 將libs目錄下的python27.lib複製乙份為python27 d.lib 2 測試指令碼 python指令碼如下 def hello print hello d...
C 呼叫Python模組
一 環境vs2015,python3.7,windows 64位作業系統 三 新建vs控制台工程,並在工程目錄下建立pymodule.py檔案 四 編寫pymodule.py檔案,如下 def retnum return 12345 def retdouble return 12345.6789 d...