我試圖在應用程序中繞行一個函數。我有它的來源可用。調用約定是錯誤的,我無法弄清楚。 C++
class Foot : public Something, public SomethingElse {
public:
Foot(double SomethingAgain, double Somethings,
Blahblah *AnotherThing = NULL);
virtual ~Foot();
virtual void detourmepls(const char *ARGUMENT);
};
這是如何在頭文件中定義的。
這是我用來定義它,所以我會從我的dll使用正確的地址來調用它。
void (__cdecl* detourmepls)(const char *stuff);
虛擬void函數的真正調用約定是什麼?
任何幫助表示讚賞。
新修改和INFOS:
我使用MS走彎路1.5
detourmepls = (void(__thiscall*)(void *Pthis,void *Unknown,const char *))DetourFunction((PBYTE)ADDRESS, (PBYTE)hookedFunction);
這是我試過的彎路(其漂亮搞砸了。)
我假設你傳遞函數作爲C回調,這是不可能的。如果註冊回調函數允許傳遞用戶數據,則編寫一個靜態函數,並將'this'指針傳遞給註冊函數。 –
你正在得到什麼錯誤?當我嘗試調用原始函數時, – vishram0709
應用程序崩潰。 – user3548518