真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c調(diào)python函數(shù) c++怎么調(diào)用python函數(shù)

C語(yǔ)言程序如何調(diào)用python程序

下面是一個(gè)例子:

成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司,提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司,網(wǎng)頁(yè)設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,是專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

首先是python的一個(gè)簡(jiǎn)單函數(shù)

class Hello:

def __init__(self, x):

self.a = x

def print(self, x=None):

print(x)

def xprint():

print("hello world")

if __name__ == "__main__":

xprint()

h = Hello(5)

h.print()1

下面是C語(yǔ)言

#include python3.4m/Python.h

#include stdio.h

#include stdlib.h

#include string.h

int main()

{

Py_Initialize();

// 將當(dāng)前目錄加入sys.path

PyRun_SimpleString("import sys");

PyRun_SimpleString("sys.path.append('./')");

// 導(dǎo)入hello.py模塊

PyObject *pmodule = PyImport_ImportModule("hello");

// 獲得函數(shù)xprint對(duì)象,并調(diào)用,輸出“hello world\n”

PyObject *pfunc = PyObject_GetAttrString(pmodule, "xprint");

PyObject_CallFunction(pfunc, NULL);

// 獲得類(lèi)Hello并生成實(shí)例pinstance,并調(diào)用print成員函數(shù),輸出“5 6\n”

PyObject *pclass = PyObject_GetAttrString(pmodule, "Hello");

PyObject *arg = Py_BuildValue("(i)", 5);

PyObject *pinstance = PyObject_Call(pclass, arg, NULL);

PyObject_CallMethod(pinstance, "print", "i", 6);

Py_Finalize();

return 0;

}

編譯命令如下:

gcc pyapi.c -lpython3.4m -o pyapi

c/c++調(diào)用python中返回值為list的函數(shù)

在C/C++中調(diào)用了這個(gè)函數(shù)之后不是會(huì)返回一個(gè)PyObject對(duì)象嗎?那個(gè)對(duì)象就是一個(gè)List啊,然后使用PyList_Size()獲取它的大小,使用PyList_GetItem()去讀取其中的元素就ok了啊。

找下Python的C API Manual,里面這些函數(shù)的用法寫(xiě)的很詳細(xì)的。

我在C++中調(diào)用python寫(xiě)的函數(shù)為什么不行?

可以具體說(shuō)一下是怎么調(diào)用的嗎,像我使用C/C++調(diào)用這個(gè)外部程序(例如Python程序)時(shí),我是這么做的,通過(guò)命令行參數(shù)通信,給個(gè)模板,注意看我的注釋。

C的部分(用C++也行,不過(guò)不難,也不是重點(diǎn)):

#includestdlib.h

#includestdio.h

int main(){

char pic_dir[255],pic_dir[255],cmd[255];

printf("What is your pic_dir? (e.g. C:\\a.jpg)\n");

/*雖然我強(qiáng)烈認(rèn)為命名上應(yīng)該不用pic_dir而是用pic_path*/

scanf("%s",pic_dir);

printf("What is your pic_name?(e.g. b.jpg)\n");

scanf("%s",pic_name);

printf("so we are calling a python program to deal with those above, please wait...\n");

sprintf(cmd,"python process.py %s %s ",pic_dir,pic_name);

/*這里是一個(gè)關(guān)鍵點(diǎn),python的運(yùn)行目錄在你的PATH環(huán)境變量里有,如下圖最后一行*/

system(cmd);

return 0;

}

process.py:(部分內(nèi)容,主要是在process方法定義后面加一點(diǎn)東西)

def process(pic_dir,pic_name):

...#(這里的語(yǔ)句體(suite)不用改, 加上后面兩句就行)

from sys import argv

process(argv[1],argv[2])

OK完成

如何在C語(yǔ)言中調(diào)用python函數(shù)

C語(yǔ)言不能直接調(diào)用Python源程序,但是可以通過(guò)進(jìn)程調(diào)用來(lái)實(shí)現(xiàn)。


分享文章:c調(diào)python函數(shù) c++怎么調(diào)用python函數(shù)
網(wǎng)址分享:http://weahome.cn/article/hhhieo.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部