是否有可能使MS Visual C++編譯器將Win32 API導入調用視爲(未解析)外部符號?使MS Visual C++編譯器將Win32 API導入調用視爲(未解析)外部符號
換句話說,我需要改變dword ptr
調用,參考了一些IAT,如:
FF 15 00 00 00 00 call dword ptr [[email protected]]
到外部符號調用,如:
E8 00 00 00 00 call [email protected]
這意味着編譯後我不需要鏈接,因爲顯然這是不可能的。所以作爲一個產品,我想獲得(MS)COFF .obj
文件,這種不尋常的Win32 API調用。
爲什麼連接「明顯」不可能? –
這沒有什麼意義,'__imp_MessageBoxA @ 16'與'_MessageBoxA @ 16'完全一樣「無法解析」。這個區別是由聲明中'__declspec(dllimport)'屬性引起的,編譯器#從WinUser.h包含它,這是一個優化。通過重新聲明函數來優化優化並不會使其「更好」,因此始終需要鏈接導入庫。只有使用LoadLibrary + GetProcAddress才能避免鏈接。 –
@BoPersson,因爲Win32 API函數在系統DLL中定義,系統DLL在啓動時加載到進程中。因此,在鏈接階段,您無法使用真正的Win32 API函數來解析這些符號。但是,是的,我必須承認,鏈接可以用「假」符號來完成。 – RIscRIpt