本發明專利技術公開了SDK導出Python接口的方法、裝置、設備及介質,該方法包括根據SDK的C++接口創建Python的接口類并與其進行綁定,生成關聯Python類型的STL標準模板庫列表和C++類列表;根據STL標準模板庫列表進行STL標準模板庫綁定;根據C++類列表進行C++接口參數類綁定;編譯所有生成的文件并鏈接為庫文件輸出。本發明專利技術能夠提高SDK導出Python接口的效率,減輕開發工作量,不易出錯,且后期添加接口或維護也比較方便。比較方便。比較方便。
【技術實現步驟摘要】
SDK導出Python接口的方法、裝置、設備及介質
[0001]本專利技術屬于軟件開發
,涉及SDK導出Python接口的方法、裝置、設備及介質。
技術介紹
[0002]在電腦、服務器或其他設備上,通過SDK(軟件開發工具包)接口調用,可方便地實現各種SDK中提供的功能。目前,使用Python編程語言的用戶群體非常大,對該語言進行支持,可方便用戶利用SDK的Python接口使用SDK提供的功能。通常,支持SDK的Python接口方法是基于已開放的其他語言,如C++的接口,對這些接口逐一進行手動編碼綁定,無疑這個工作量是巨大的,耗時費力,且容易出錯。
技術實現思路
[0003]專利技術目的:本專利技術的目的是提出一種SDK導出Python接口的方法、裝置、設備及介質,能夠提高SDK導出Python接口的效率,避免手動編程過程中容易出錯的問題。
[0004]技術方案:本專利技術第一方面,提供一種SDK導出Python接口的方法,包括:
[0005]根據SDK的C++接口創建Python的接口類并與其進行綁定,生成關聯Python類型的STL標準模板庫列表和C++類列表;
[0006]根據STL標準模板庫列表進行STL標準模板庫綁定;
[0007]根據C++類列表進行C++接口參數類綁定;
[0008]編譯所有生成的文件并鏈接為庫文件輸出。
[0009]進一步地,在接口綁定時,對于使用引用作為參數的接口,將返回值設為tuple類型,將引用參數作為tuple中的一個成員返回。
[0010]進一步地,在進行STL標準模板庫綁定時,遍歷生成的STL標準模板庫列表,針對每一個模板類型創建一個單獨的模板文件,將STL標準模板庫導出。每個類創建一個文件可以避免編譯過程對資源的過度消耗。
[0011]進一步地,在進行C++接口參數類綁定時,遍歷生成的C++類列表,針對每一個C++類分別創建代碼文件,將C++類導出。每個類創建一個文件可以避免編譯過程對資源的過度消耗。
[0012]以上對每一個STL模板類型創建單獨的模板文件,每一個C++類分別創建代碼文件,可以避免編譯過程對資源的過度消耗導致的內存不足問題,同時可以在某些類發生變化時單獨編譯對應的文件,實現增量編譯,減少編譯時間。
[0013]進一步地,所有生成的文件都存放在SDK的目錄下,不對原C++中的接口或類作修改,這樣可避免對原有代碼的修改及維護。
[0014]進一步地,編譯所有生成的文件并鏈接為庫文件輸出,包括:對所有生成的文件進行編譯并靜態鏈接為靜態庫文件,隨后從該靜態庫文件和所有依賴的靜態庫文件中提取所有的.o對象文件,最后將所有.o文件通過動態鏈接的方式鏈接為.so動態鏈接庫。
[0015]本專利技術第二方面提供一種SDK導出Python接口的裝置,包括:
[0016]接口綁定模塊,根據SDK的C++接口創建Python的接口類并與其進行綁定;
[0017]STL標準模板庫綁定模塊,用于生成關聯Python類型的STL標準模板庫列表,根據該STL標準模板庫列表進行STL標準模板庫綁定;
[0018]C++接口參數類綁定模塊,用于生成關聯Python類型的C++類列表,根據該C++類列表進行C++接口參數類綁定;
[0019]編譯及庫文件生成模塊,用于編譯所有生成的文件并鏈接為庫文件輸出。
[0020]本專利技術第三方面提供一種SDK導出Python接口的設備,包括處理器和存儲器;
[0021]所述存儲器,用于存儲計算機程序;
[0022]所述處理器,用于執行所述計算機程序以實現上述第一方面的方法。
[0023]本專利技術第四方面提供一種計算機可讀存儲介質,用于存儲計算機程序,所述計算機程序被計算機執行時,實現上述第一方面的方法。
[0024]本專利技術第五方面提供一種計算機程序產品,當所述計算機程序產品在計算機上運行時,使得計算機執行上述第一方面的方法。
[0025]有益效果:本專利技術與現有技術相比,具有如下顯著優點:能夠提高SDK導出Python接口的效率,減輕開發工作量,不易出錯,且后期添加接口或維護也比較方便。
附圖說明
[0026]為了更清楚地說明本專利技術實施例的技術方案,下面對本專利技術實施例中所需要使用的附圖作簡單介紹,顯而易見地,下面所描述的附圖僅僅是本專利技術的實施例,對于本領域普通技術人員來說,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0027]圖1是SDK導出Python接口的裝置模塊結構圖;
[0028]圖2是SDK文件夾目錄示意圖;
[0029]圖3是編譯及庫文件生成流程框圖。
具體實施方式
[0030]下面將結合本專利技術實施例中的附圖,對本專利技術實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例不是全部的實施例。基于本專利技術中的實施例,本領域技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本專利技術的保護范圍。
[0031]本申請實施例提供的一種SDK導出Python接口的方法,其基于現有C++語言的調用接口,首先將現有C++接口綁定并導出為Python可以使用的接口;隨后把接口中關聯的STL標準模板庫、C++接口參數類也綁定導出為Python中的類,方便Python用戶的使用;最后將上述生成的代碼編譯,從靜態編譯庫文件中提取模板文件,并動態編譯為.so格式的Python庫。
[0032]下面對該SDK導出Python接口的方法作具體介紹。
[0033]圖2所示為SDK文件夾目錄示意圖,包括頭文件目錄21、庫文件目錄22、STL標準模板庫綁定目錄23、C++接口參數類綁定目錄24和C++源代碼目錄25。
[0034]SDK導出Python接口的方法,包括:
[0035]接口綁定,根據SDK的C++接口創建Python的接口類并與其進行綁定,生成關聯
Python類型的STL標準模板庫列表,生成關聯Python類型的C++類列表;其中,生成關聯Python類型的STL標準模板庫列表,是將在C++中定義的,如vector、map等類型,綁定并導出為Python類型;生成關聯Python類型的C++類列表,是將將接口中關聯的C++類自動綁定并導出為Python類型。
[0036]默認的C++接口以及SDK核心代碼在C++源代碼目錄25下,軟件程序在找到所有待導出的接口后,根據Boost.Python、pybind11等第三方Python的綁定庫的格式要求,創建Python函數接口的綁定。本實施例中,使用pybind11。
[0037]在接口綁定時,對于使用引用作為參數的接口,由于Python對引用參數并不支持,為了將該引用能夠傳遞到Python中使用,返回值設為tuple類型,將引用參數作為tuple中的一個成員返回,這樣Python就可以從tuple中獲得該參數的結果值。<本文檔來自技高網...
【技術保護點】
【技術特征摘要】
1.SDK導出Python接口的方法,其特征在于,包括:根據SDK的C++接口創建Python的接口類并與其進行綁定,生成關聯Python類型的STL標準模板庫列表和C++類列表;根據STL標準模板庫列表進行STL標準模板庫綁定;根據C++類列表進行C++接口參數類綁定;編譯所有生成的文件并鏈接為庫文件輸出。2.根據權利要求1所述的方法,其特征在于,在接口綁定時,對于使用引用作為參數的接口,將返回值設為tuple類型,將引用參數作為tuple中的一個成員返回。3.根據權利要求1所述的方法,其特征在于,在進行STL標準模板庫綁定時,遍歷生成的STL標準模板庫列表,針對每一個模板類型創建一個單獨的模板文件,將STL標準模板庫導出。4.根據權利要求1所述的方法,其特征在于,在進行C++接口參數類綁定時,遍歷生成的C++類列表,針對每一個C++類分別創建代碼文件,將C++類導出。5.根據權利要求1所述的方法,其特征在于,所有生成的文件都存放在SDK的目錄下,不對原C++中的接口或類作修改。6.根據權利要求1或5所述的方法,其特征在于,編譯所有生成的文件并鏈接為庫文件輸出,包括:對所有生成的文件進行編譯并靜態鏈...
【專利技術屬性】
技術研發人員:劉生,林巧,趙迎瑞,李松領,何杏興,
申請(專利權)人:南京熊貓電子裝備有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。