1

関数のアドレスを保持するポインターによって関数を呼び出すと、エラー コードが生成されます。

p=GetProcAddress(h,"installhook");//p is a pointer that holds the address returned from getprocaddress() function
(*p)(); //using this pointer making a call to installhook function

(*p)();しかし、コードは、用語が関数に評価されないと言って、呼び出しを行っているときにエラーを生成しています。これをどのように克服しますか?ポインターを使用して関数を呼び出す他の方法はありますか?

4

2 に答える 2

2

GetProcAddressの戻り値を正しい関数型にキャストする必要があります。例えば:

typedef void (*FuncPtr)();    //assuming a function like void f()
FuncPtr p;

p = (FuncPtr) GetProcAddress(h, "funcName");
if (p)
    p();
else
    printf("Function not found\n");
于 2012-06-10T18:21:15.040 に答える
2

Verifypは次のように宣言されます。

void (*p)(void);

の戻り値の型がGetProcAddress同じであること。

于 2012-06-10T18:21:30.920 に答える