從the example of hooking C++ methods with MobileSubstrate我發現這一點:爲什麼在掛鉤C++函數時MobileSubstrate使用這樣一個長函數名?
void (*X_ZN20WebFrameLoaderClient23dispatchWillSendRequestEPN7WebCore14DocumentLoaderEmRNS0_15ResourceRequestERKNS0_16ResourceResponseE) (void* something, void* loader, unsigned long identifier, void* request, const void** response);
爲什麼我們需要這個x_zn20 ... 23 .... ... 7名之間14等?這是什麼意思?我不認爲這是真名。
只是一個猜測,但我認爲這與名稱混搭有關。在C++中聲明的函數名稱會被「搗亂」成爲令人討厭的符號名稱,因爲編譯器會處理像重載函數和多個函數名稱相同的類。 – 2012-02-29 18:09:52
這與C或Objective-C有什麼關係? – 2012-02-29 18:38:34
這裏顯示的代碼是C,@Nicol。它是鉤住C++函數的C代碼。 MobileSubstrate在C和Objective-C中提供了示例。 – 2012-02-29 18:59:52