以下是部分代码
class thisDetour
{
public:
bool ( * Target_CI_HYGameMapData__Load)(int, int, int, int);//函数指针,后面会用::GetProcAddress(hm,MAKEINTRESOURCE(8197)); 来赋值
virtual bool Detour_CI_HYGameMapData__Load(int, int, int, int);//自己写的函数};在DLL的入口加入代码: DetourAttach(&(PVOID&)MapDetour.Target_CI_HYGameMapData__Load,MapDetour.Detour_CI_HYGameMapData__Load);
结果通不过编译了,以下是错误:
1>.\测试.cpp(119) : error C3867: 'thisDetour::Detour_CI_HYGameMapData__Load': function call missing argument list; use '&thisDetour::Detour_CI_HYGameMapData__Load' to create a pointer to member请问,这是什么原因造成的?应该如何修改?

解决方案 »

  1.   

    把MapDetour.Detour_CI_HYGameMapData__Load改为&MapDetour.Detour_CI_HYGameMapData__Load试试
      

  2.   

    1>.\测试.cpp(119) : error C2276: '&' : illegal operation on bound member function expression
      

  3.   

    只能用static成员函数或全局函数thiscall的函数指针一般不能直接调用,因为要传入this指针
      

  4.   

    如果要使用thiscall,可结合thunk
      

  5.   

    &(PVOID&)thisDetour::Detour_CI_HYGameMapData__Load似乎这样可以。但是我似乎HOOK错了函数了,HOOK之后没有任何动静。这个问题暂时告一段落。