python呼叫c 動態庫(1)

2021-09-17 01:25:09 字數 1076 閱讀 9535

由於專案中需要使用python語言搭建伺服器呼叫我的目標檢測演算法來實現功能,所以記錄一下自己除錯過程中的歷程,也做個mark。

1.準備c++動態庫

#ifndef cppde_h

#define cppde_h

#include

"cppde_global.h"

#include

#include

#include

#include

"opencv2/opencv.hpp"

#include

"caffe/refinedet_detect.hpp"

class

cppdeshared_export cppde

;

以上是我的c++原始碼標頭檔案,主要包含檢測器啟動,檢測功能函式,由於python不可以直接呼叫c++方法,所以得將上述方法用extern c轉為python可以直接呼叫的c方法,在上述**下,新增以下部分:

#ifdef __cplusplus

extern

"c"const

char

*detecttojson

(const

float confidence_threshold,

int rows,

int cols,

unsigned

char

* imgdata,

char

* img_id)

void

release()

#ifdef __cplusplus

}#endif

#endif

// cppde_h

這裡相當於用c將c++中的方法呼叫重新寫了一遍,這裡需要注意的是:由於c和c++中引數型別名不一樣,所以c++的std::string 得修改為char*,cv::mat型分解為int rows, int cols和unsigned char* imagedata指標傳入,具體對應型別名可以自己去查。

以上準備完畢,可以自己用main函式測試功能正常與否,如果沒問題就可以編譯成自己的動態庫了!

Python 呼叫 C 動態庫

呼叫c庫而不是c 庫 要注意平台位數對應 解釋型語言自上而下執行 函式類似標籤,縮排表示 塊 一行一條語句時可以不用分號 如何分配一段記憶體等 test python sample 輸入輸出 print hello end print python string input 請輸入 print 你輸...

python呼叫C語言動態庫

python完美相容c語言,有了ctypes 可以呼叫c相關 如果是c 編譯的時候加上 extern c 就可以了 如果是一些複雜型別比如結構體,類,聯合一些 可以考慮用boost.python exp.c include int add int a,int b 編譯生成動態庫add.so gcc ...

c 動態庫封裝及呼叫(1 動態庫介紹)

1 乙個程式從原始檔編譯生成可執行檔案的步驟 預編譯 編譯 彙編 鏈結 1 預編譯,即預處理,主要處理在源 檔案中以 開始的預編譯指令,如巨集展開 處理條件編譯指令 處理 include指令等。2 編譯過程就是把預處理完的檔案進行一系列詞法分析 語法分析 語義分析以及優化後生成相應的彙編 檔案。3 ...