實現 C呼叫 C 函式

2021-06-13 15:09:22 字數 926 閱讀 8083

c 呼叫 c++ 函式

1. mymgr.cpp : 可以是乙個普通的純c++ 函式,

或者是在qt開發環境中的帶有等標頭檔案的c++類函式;

2. mymidprovider.h : 利用如下格式宣告即將被c呼叫的函式;

#ifdef __cplusplus

extern "c"

#endif

mymidprovider.cpp : 主要是接收c函式傳過來的引數,

用c還原.

如返回的是乙個類,則用c語言支援的結構體存放原本類中的資料,以供c函式呼叫;

3. 編輯 c++函式成.so 檔案,移動至 /usr/lib64/(lib)目錄下, 

mytest.c:包含「mymidprovider.h」標頭檔案,即可呼叫定義在c++中的函式;

(若在qt等編輯器中,在sources 包含mytest.c ,在headers 包含mytest.h,執行c函式呼叫c++函式;)

編譯c++檔案成.so 

1. 普通的純c++函式,可在終端下利用 g++ -shared -fpic -o a.so a.cpp 編譯.so;

依賴 a.so 編譯 b.so; g++ -shared -fpic -o b.so b.cpp -la

同時編譯: g++ -shared -fpic -o b.so a.cpp b.cpp(移動至/usr/lib(lib64))

在終端下,編譯c函式: gcc ***.c -o test -lb

編譯命令: make distclean -> qmake-qt4 ***.pro ->將生成的一系列的libxx.so  移至/usr/lib(lib64)中;

c++呼叫c函式

只需要包含對應c的標頭檔案即可;

如:extern "c"

fmoonstar 更新至2013/05/17

C 呼叫C函式

前言 以前見到extern c 這樣的語句,只是簡單地知道跟外部鏈結有關,但是沒有深刻理解它的意思。首先,為什麼要使用extern c 修飾符?c 呼叫其它語言的函式,由於編譯器生成函式的機制不一樣,所以需要經過特殊處理,才可以呼叫。呼叫c語言的函式,需要在函式宣告的地方語句extern c 如果不...

C 呼叫C函式

我新建了個mfc工程,包含了md5的c檔案,並且按照 cdecl編譯成c 但是我在工程主對話方塊的.cpp檔案呼叫時總出現如下錯誤,用c的時候是沒有的 error c2660 md5init 函式不接受 1 個引數 error c2660 md5update 函式不接受 3 個引數 error c2...

c 呼叫函式

建立c 函式時,會定義函式做什麼,然後通過呼叫函式來完成已定義的任務 當程式呼叫函式時,程式控制權會轉移給被呼叫的函式,被呼叫的函式執行已定義的任務,當函式的返回語句被執行時,或到達函式的結束括號時,會把程式控制權還給主程式 呼叫函式時,傳遞所需引數,如果函式返回乙個值,則可以儲存返回值 例如 in...