C 與彙編之間相互函式呼叫問題

2021-09-28 18:30:02 字數 405 閱讀 1952

彙編中可以直接呼叫c函式,c中也可以直接呼叫彙編函式(extern, global宣告即可)

但是在c++中不能直接使用,因為c++中的函式與c的函式是不同的,因為c++支援過載,編譯後的函式名會帶有引數的資訊(如:void func(int arg)可能會被處理為func_int),而c中不需要;

所以要想在c++中使用彙編函式,不能直接 void assmbly_func()來宣告, 而應該是extern "c" void assembly_func(); 告訴編譯器按照c的命名規則去找這個函式(否則會提示未定義)

在彙編中也不能直接call cpp_func, 要在cpp_func定義時,宣告為c函式,如下

extern "c" void cpp_func()

......

}如有錯漏,煩請指正。

C與C 之間相互呼叫

c與c 之間相互呼叫 1 匯出c函式以用於c或c 的專案 如果使用c語言編寫的dll,希望從中匯出函式給c或c 的模組訪問,則應使用 cplusplus 預處理器巨集確定正在編譯的語言。如果是從c 語言模組使用,則用c鏈結宣告這些函式。如果使用此技術並為dll提供標頭檔案,則這些函式可以原封不動地由...

C與C 之間相互呼叫

1 匯出c函式以用於c或c 的專案 如果使用c語言編寫的dll,希望從中匯出函式給c或c 的模組訪問,則應使用 cplusplus 預處理器巨集確定正在編譯的語言。如果是從c 語言模組使用,則用c鏈結宣告這些函式。如果使用此技術並為dll提供標頭檔案,則這些函式可以原封不動地由c和c 模組使用。以下...

C與C 之間相互呼叫

1 匯出c函式以用於c或c 的專案 如果使用c語言編寫的dll,希望從中匯出函式給c或c 的模組訪問,則應使用 cplusplus 預處理器巨集確定正在編譯的語言。如果是從c 語言模組使用,則用c鏈結宣告這些函式。如果使用此技術並為dll提供標頭檔案,則這些函式可以原封不動地由c和c 模組使用。以下...