簡體   English   中英

使用 Python 測試 C++ 庫

[英]Testing a C++ library with Python

我有一個從 C++ 代碼(用 gcc 編譯)構建的 libfoo.so 庫,我想快速測試它的一些導出類(基本上,實例化一個 class 然后調用它的方法來檢查輸出)。

雖然我可以在 C/C++ 中使用鏈接到相關庫並構建我的測試的主文件來執行此操作,但我認為如果可以簡單地從命令行調用 Python 並調用來自那里。

我知道我可以使用 ctypes 中的 CDLL 來加載 C 風格的庫,但是 C++ 庫和對象是否有類似的功能?

編輯:理想情況下,我不想修改 C++ 代碼,我需要按原樣使用它。

老實說 C++ 有點亂。 You could do something like create a pure C function which wraps the C++ functionality (which you then call from python) but at that point you might as well write your tests in C++. 不幸的是,唯一的工具(據我所知)是 SWIG。

遺憾的是,它被稱為“簡化的”包裝器和接口生成器,因為它一點也不簡單。 如果您的簽名中有非常原始的數據類型(例如,JUST ints 或者可能是 char*),這將是一項非常快速的工作。 否則你必須告訴 swig 如何在語言之間編組你的數據類型,這很快就會變得非常難看。 此外,很快你就會意識到你必須學習 CPython API 才能編寫編組代碼。

到那時,您不妨編寫自己的 CPython 包裝器,而不涉及 SWIG。 您突然意識到自己花了一個月的時間學習新的 API 並感到非常沮喪。 如果您要經常這樣做,那絕對值得您花時間。 但是,如果這是一次性的,只需在 C / C++ 中編寫測試。

(我是從這里的經驗說的)

我同意克里斯的回答。 但是,我想指出Cython支持 C++(有一些限制)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM