當前位置:首頁 » 編程語言 » python調用clibrary

python調用clibrary

發布時間: 2025-01-28 17:15:56

① 有誰知道python怎麼調用c#的dll

1、首選運行工具 makepy.py。

② 在python中如何調用PCSC中的介面

你找個工具將這個介面API,自動轉換成python版本的就可以了。好象是SWIG和Boost。 這兩個以前看過,偶爾還試過幾次。之所以建議你用自動工具,就是因為python對於C++擴展麻煩些,對於C語言介面可以使用ctypes和cython簡單解決。不過C++如果用這些方法有時候被很麻煩。

boost在linux里會經常用到,在windows下也可以使用。SWIG在一般的教程里都會提及到。SIP也是最近出名的。

下面是一些參考資料,搜索來的。

=== 使用工具進行擴展 ===
雖然擴展過程並不復雜,但也可以使用許多已知的工具簡化擴展過程。
(1) SWIG
由David Beazley創建,是一個自動的擴展構造工具。它讀入注釋的C/C++頭文件,為python、tcl、perl等多種腳本語言產生wrap代碼。SWIG可以包裝大量C++特性到Python的擴展模塊中。
評價:swig簡單,可以支持多種腳本文件,但支持的c++特性不完備。
(2) SIP
由Phil Thompson創建,是一個C++模塊構造器,專門為C++的類創造wrapper。它曾經被用於創建PyQt和PyKDE擴展模塊,因此比較出名。
評價:支持C++特徵很齊全,但比較復雜。
(3) bgen
該工具被包含在標准Python發布包中的模塊構建工具集里,由Jack Jansen維護。它用於產生在Macintosh版本可用的Python擴展模塊。
(4) pyfort
由Paul bois創建,用來產生Fortran語言生成的擴展模塊。
(5) cxx
也由Paul Dubois創建,是一個庫,為Python的C++擴展提供了友好的API。Cxx允許將許多python對象(如list和tuple)使用到STL的運算中。庫也提供了C++異常處理到python異常處理的轉化。
(6) WrapPy
由Greg Couch創建,通過讀入C++頭文件來產生擴展模塊。
(7) Boost Python Library
由David Abrahams創建。該庫提供了更多與眾不同的C++ wrap到python擴展中,而只需要對要擴展的C++類寫很少的附加信息。
評價:Boost為C++提供了許多實用的庫,如Regex(正則表達式庫)、Graph(圖組件和演算法)、concept check(檢查泛型編程中的concept)、Thread(可移植的C++多線程庫)、Python(把C++類和函數映射到Python之中)、Pool(內存池管理)等等。

Boost總體來說是實用價值很高,質量很高的庫。並且強調對跨平台的支持。但是Boost中也有很多是實驗性質的東西,在實際的開發中實用需要謹慎。
boost.python支持的c++特性較多,但是比較復雜。

③ 如何用python獲得C函數中的變數的值

網頁鏈接

python ctypes 第一句話:

ctypesis a foreign function library for Python. It provides C compatible data types, and allows calling functions in DLLs or shared libraries. It can be used to wrap these libraries in pure Python.

沒看到有說可以直接訪問data。

你可以這樣加這樣的函數:

intget_a()
{
returna;
}

再在python裡面調用。

④ python的opencv有源碼

Python中調用cv2庫是通過編譯C/C++代碼並生成so文件實現的。opencv的cv2.so文件是通過cv2.cpp文件編譯而成。此文件位於指定的gitee倉庫中。在該倉庫的特定行,使用cmake函數add_library指定生成cv2.so。

調用cv2.so的方法僅需導入cv2庫即可。這句代碼由自動生成的python_loader.cmake文件產生,該文件同樣位於上述gitee倉庫中。生成的文件存放在python_loader文件夾下,其中cv2/__init__.py文件導入了cv2.so,並利用了其中定義的C函數。

導入cv2.so並不足夠,還需要藉助numpy來處理數據結構。因此,在python_loader/cv2/__init__.py文件中,首先導入cv2.so,然後進一步導入了額外的python_loader/cv2/_extra_py_code/等。這里import cv2的語句存在歧義,根據當前環境決定是執行cv2/__init__.py還是查找cv2.so。

在執行import cv2時,實際執行的是python_loader/cv2/__init__.py文件。在該文件中,首先刪除當前cv2模塊,然後重新導入cv2.so。接著,導入了python_loader/cv2/_extra_py_code/gapi,為cv2添加了額外的數據處理函數。最終,通過py_code_loader.init('cv2')執行了_extra_py_code.init('cv2'),將gapi整合入cv2模塊。

熱點內容
託管房屋演算法 發布:2025-01-30 09:22:54 瀏覽:555
如何用電話查手機配置 發布:2025-01-30 09:21:15 瀏覽:674
c語言管理系統登錄 發布:2025-01-30 09:05:30 瀏覽:403
ad原理圖編譯如何規避出錯 發布:2025-01-30 08:59:51 瀏覽:475
指紋密碼鎖如何用手機遠程開鎖 發布:2025-01-30 08:59:41 瀏覽:603
中國期刊全文資料庫的檢索入口 發布:2025-01-30 08:57:16 瀏覽:175
手機怎麼解壓微盤 發布:2025-01-30 08:51:31 瀏覽:879
資料庫exp命令 發布:2025-01-30 08:45:47 瀏覽:444
國服文明重啟為什麼進不了伺服器 發布:2025-01-30 08:28:39 瀏覽:224
android不顯示圖標 發布:2025-01-30 08:06:11 瀏覽:464