午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

Python3.6調(diào)用C++函數(shù)

 goodwangLib 2020-01-30

1.首先配置VS環(huán)境,我這里用的是VS2015,分別選擇Release和X64下運(yùn)行。


2.在VS中添加Python的庫(kù)。




3.創(chuàng)建CPP文件,代碼如下:

#include <Python.h>  
#include <iostream>  

static PyObject* HelloWorld(PyObject *self, PyObject *args)
{
std::cout << "Hello, world" << std::endl;
Py_INCREF(Py_None);
return Py_None;
}

static PyMethodDef Methods[] = {
{ "HelloWorldFn", HelloWorld, METH_VARARGS, "chen" },
{ NULL, NULL }
};

static struct PyModuleDef HelloWorld_module =
{
PyModuleDef_HEAD_INIT,
"HelloWorld_module", /* name of module */
"",          /* module documentation, may be NULL */
-1,          /* size of per-interpreter state of the module, or -1 if the module keeps state in global variables. */
Methods
};

//初始化
PyMODINIT_FUNC PyInit_HelloWorld(void) {
return PyModule_Create(&HelloWorld_module);

}

注意:最后一個(gè)函數(shù)使用了導(dǎo)出函數(shù)PyInit_PrintHello,這個(gè)名字不是任意取的,是你的module名稱添加前綴PyInit。該函數(shù)內(nèi)部此使用的函數(shù),由于Py_InitModule函數(shù)是python2.x中的函數(shù),在python2.x中可以正常工作,但在python3.x中不再使用,因此此處在cpp中創(chuàng)建了一個(gè)PyModuleDef結(jié)構(gòu),然后將其引用傳遞給PyModule_Create。

4.需要將CPP文件生成pyd文件才能在python中調(diào)用,且pyd文件與dll文件類似,因此需修改VS中文件的配置類型,修改為動(dòng)態(tài)庫(kù)。


5.右鍵項(xiàng)目點(diǎn)擊生成,生成成功后下面的控制臺(tái)有如下顯示:


6.打開該目錄,將該目錄下的dll文件后綴修改為python可調(diào)用的pyd文件。


7.將修改完后綴的pyd文件拷貝到python安裝路徑下的DLLS中。


8.此時(shí)就可以在pythonIDE中或者在開發(fā)工具下調(diào)用。下面是在cmd中調(diào)用。


下面是在Pycharm下進(jìn)行調(diào)用。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多