最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python嵌入C/C++進行開發(fā)詳解

 更新時間:2020年06月09日 14:47:12   作者:silencement  
在本篇文章里小編給大家分享了關于Python嵌入C/C++進行開發(fā)的相關知識點內容,有興趣的朋友們可以參考下。

如果你想把Python嵌入C/C++中是比較簡單的事情,你需要的是在VC中添加Python的include文件目錄和lib文件目錄。下面我們來看下如何把Python嵌入C/C++中。

VC6.0下,打開 tools->options->directories->show directories for,將Python安裝目錄下的inlude目錄添加到inlude files項中,將libs目錄添加到library files項中。

VC2005下,打開tools->options->項目和解決方案->VC++目錄,然后做相同工作。

代碼如下:

在debug下執(zhí)行出錯,“無法找到python31_d.lib文件”,后查到原因是:在debug下生成必須要有python31_d.lib文件,否則只能在release下生成

#include <python.h> 
int main() 
{ 
Py_Initialize(); 
PyRun_SimpleString("Print 'hi, python!'"); 
Py_Finalize(); 
return 0; 
}

Py_Initialize函數原型是:void Py_Initialize()

把Python嵌入C/C++中時必須使用該函數,它初始化Python解釋器,在使用其他的Python/C API之前必須先調用該函數??梢允褂肞y_IsInitialized函數判斷是否初始化成功,成功返回True。

PyRun_SimpleString函數原型是int PyRun_SimpleString(const char *command),用來執(zhí)行一段Python代碼。

注意:是否需要維持語句間的縮進呢?

Py_Finalize函數原型是void Py_Finalize(),用于關閉Python解釋器,釋放解釋器所占用的資源。

PyRun_SimpleFile函數可以用來運行".py"腳本文件,函數原型如下:

int PyRun_SimpleFile(FILE *fp, const char *filename);

其 中fp是打開的文件指針,filename是要運行的python腳本文件名。但是由于該函數官方發(fā)布的是由visual studio 2003.NET編譯的,如果使用其他版本的編譯器,F(xiàn)ILE定義可能由于版本原因導致崩潰。同時,為簡便起見可以使用如下方式來代替該函數:

PyRun_SimpleString("execfile(‘file.py')"); //使用execfile來運行python文件

Py_BuildValue()用于對數字和字符串進行轉換處理,變成Python中相應的數據類型(在C語言中,所有Python類型都被聲明為PyObject類型),函數原型如下:

PyObject *Py_BuildValue(const char *format, …..);

PyString_String()用于將PyObject*類型的變量轉換成C語言可以處理的char*型,具體原型如下:

char* PyString_String(PyObject *p)。

知識點擴展:

Python調用C/C++ DLL動態(tài)鏈接庫的方法

首先,在創(chuàng)建一個DLL工程(本例創(chuàng)建環(huán)境為VS 2005),頭文件:

//hello.h
#ifdef EXPORT_HELLO_DLL
#define HELLO_API __declspec(dllexport)
#else
#define HELLO_API __declspec(dllimport)
#endif
extern "C"
{
 HELLO_API int IntAdd(int , int);
}

CPP文件:

//hello.cpp
#define EXPORT_HELLO_DLL
#include "hello.h"
HELLO_API int IntAdd(int a, int b)
{
 return a + b;
}

這里有兩個注意點:

(1)弄清楚編譯的時候函數的調用約定采用的__cdecl還是__stdcall,因為根據DLL中函數調用約定方式,Python將使用相應的函數加載DLL。

(2)如果采用C++的工程,那么導出的接口需要extern "C",這樣python中才能識別導出的函數。

到此這篇關于Python嵌入C/C++進行開發(fā)詳解的文章就介紹到這了,更多相關Python如何嵌入C/C++進行開發(fā)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python使用Pillow將照片轉換為1寸報名照片的教程分享

    python使用Pillow將照片轉換為1寸報名照片的教程分享

    在現(xiàn)代科技時代,我們經常需要調整和處理照片以適應特定的需求和用途,本文將介紹如何使用wxPython和Pillow庫,通過一個簡單的圖形界面程序,將選擇的照片轉換為指定尺寸的JPG格式,并保存在桌面上,需要的朋友可以參考下
    2023-09-09
  • tornado+celery的簡單使用詳解

    tornado+celery的簡單使用詳解

    今天小編就為大家分享一篇tornado+celery的簡單使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • pandas 空數據處理方法詳解

    pandas 空數據處理方法詳解

    這篇文章主要介紹了pandas 空數據處理方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Django使用redis緩存服務器的實現(xiàn)代碼示例

    Django使用redis緩存服務器的實現(xiàn)代碼示例

    這篇文章主要介紹了Django使用redis緩存服務器的實現(xiàn)代碼示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • python發(fā)送json參數的實例代碼

    python發(fā)送json參數的實例代碼

    在寫腳本的過程中,除了發(fā)送form表單參數之外,我們還會發(fā)送json格式的參數。那么碰見json格式要怎么發(fā)送呢,這篇我們來解決這個問題,需要的朋友可以參考下
    2019-10-10
  • 使用PyTorch訓練一個圖像分類器實例

    使用PyTorch訓練一個圖像分類器實例

    今天小編就為大家分享一篇使用PyTorch訓練一個圖像分類器實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python獲取指定字符前面的所有字符方法

    Python獲取指定字符前面的所有字符方法

    下面小編就為大家分享一篇Python獲取指定字符前面的所有字符方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python內置函數locals和globals對比

    Python內置函數locals和globals對比

    這篇文章主要介紹了Python內置函數locals和globals對比,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Pycharm 2020年最新激活碼(親測有效)

    Pycharm 2020年最新激活碼(親測有效)

    本文給大家分享Pycharm 2020年最新激活碼,親測試過可以放心使用,感興趣的朋友快來吧
    2020-01-01
  • pandas 自定義列名的實現(xiàn)

    pandas 自定義列名的實現(xiàn)

    在pandas中,你可以通過多種方法自定義DataFrame的列名,下面就來介紹一下,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12

最新評論

江达县| 伽师县| 开封县| 泰顺县| 凤阳县| 嘉祥县| 尉氏县| 交口县| 广南县| 宁海县| 内江市| 鄂托克前旗| 镇康县| 衡南县| 正蓝旗| 崇仁县| 石棉县| 兰西县| 句容市| 南木林县| 晋宁县| 佛教| 长沙县| 渝中区| 林甸县| 西昌市| 玛多县| 潮州市| 咸丰县| 疏勒县| 郴州市| 乐平市| 烟台市| 大同县| 山阳县| 项城市| 和平县| 金山区| 德令哈市| 荆门市| 滨海县|