C 呼叫Python並用Winpdb除錯

2021-06-14 17:40:05 字數 1447 閱讀 1987

最近在學習用c++ 呼叫python, 發現用起來還挺方便的,就是在除錯的方面遇到了些問題.

大部分python ide都提供了除錯功能,比如eric4, pythonwin, idle等, 不是這些ide都不能除錯c++中呼叫的python指令碼.

我目前的專案框架是使用mfc寫的,它是乙個關於攝像頭測試的程式,由於經常改動所以我在程式裡面加入了python的指令碼支援.

本來ui方面想用pyqt寫的,但是考慮到這個專案保密性我就還是用mfc實現的.

對於python的embedded debugging, 我開始在網上找了很多資料,最終選擇了winpdb的方案.

winpdb可以實現embedded debugging,還可以實現網路debugging,使用起來還是比較方便的.

具體使用方法如下:

2. 包含winpdb庫

在python**中輸入import rpdb2

3. 除錯檔案

在**要開始除錯的地方加入rpdb2.start_embedded_debugger(密碼)就可以開始除錯了

4. 除錯**文字

由於測試程式和python指令碼要共享一些變數,所以我的測試程式要有除錯**文字的功能, 具體操作如下:

1) mfc中定義指令碼檔名

cstring	strscriptfile;

strscriptfile.format(_t("g_scriptfile=r'%s'"), m_strscriptpath);

pyrun_******string(strscriptfile);

2) 定義sourceprovider函式

fscript = g_scriptfile

def sourceprovidermyself(filename):

source = ""

file_object = open(fscript)

try:

source = file_object.read()

finally:

file_object.close( )

return source

3)在在**要開始除錯的地方加入一下**:

rpdb2.start_embedded_debugger(密碼, true, false, 超時時間(秒*60), sourceprovidermyself)
5. **編寫完成後, 當我們在mfc執行**時程式會停到我們設定斷點的位置, 這是我們就可以在winpdb中除錯了, 如下圖:

VS建立DLL並用C 呼叫

c 呼叫 dll,一定要將 dll放在 c 工程的配置管理器目錄下,如工程為 release 目錄就在 release下 建立.def 建立新建項,字尾改為 def 為了讓c 能匯出這些函式 標頭檔案包含目錄,格式如下 projectdir commonfun common config vxwor...

C 呼叫Python及間接呼叫Python三方庫

本文章目的是脫離安裝python環境的前提下,由c 程式呼叫python程式及python相關三方庫 紅色部分是生成路徑下直譯器執行時依賴 將紅色部分拷貝到c 編譯主exe路徑下即可,並把需要允許的py檔案頁考過去 也就是.py檔案需和編譯生成的.exe檔案放在一起 藍色部分是vs配置編譯時依賴,需...

C 匯入Excel檔案,並用repreater顯示

後台 匯入要通知的員工 protected void btnload click object sender,eventargs e else 讀取excel資料到dataset excel的絕對路徑 excel名稱 表名 excel.worksheet xsheet excel.worksheet...