最近在學習用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...