關於 C 呼叫 Python 模組的理解

2021-08-21 03:30:24 字數 1918 閱讀 3009

這篇部落格完美解決了我想在 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...