2011-07-10 9 views
0

C++でWindows detours関数をフックします。C++型指定子がありません:構文エラー

私はコード次のエラーを取得:

void (*asmFunction)(const char *text); 
void hookFunction(const char *text) { 
    __asm nop; 
    asmFunction(text); 
} 
asmFunction = (void (__cdecl *)(const char *))DetourFunction((PBYTE)0x433A90, (PBYTE)&hookFunction); 

コンパイラ(MSVC++ 2008)は言う:

エラーC4430:不足している型指定 - int型と仮定します。ヒント: "default-int"はC++ではサポートされていません。 Yadda yadda ...
エラーC2373: 'asmFunction':異なる指定子と再定義
エラーC2440: '初期化中': '無効(__cdecl *)(のconstのchar *)' 'のint型に変換することはできません。この変換が有効なコンテキストはありません。

コードは昨日動作しました。どうしたの?どのように私はフックを破壊することなくそれを修正することができますか?

+4

C++エラーは、それ自体が怖いです。ドイツ語の方がもっとそうです:) –

+1

typedefを使って、これをより読みやすく保守してみてください。 –

+0

エラーの意味を理解するために、ドイツ人の皆さんには必要なものがあります。ここで@Xeoはいつもここでここに潜んでいます:) –

答えて

4

この式は関数内にある必要があります。

int main() { 
    asmFunction = (void (__cdecl *)(const char *))DetourFunction(
     (PBYTE)0x433A90, (PBYTE)&hookFunction 
    ); 
    // ... 
} 

移動先a book on C++

+0

うん男! ); –

+1

もう一度やっていたのですが –

関連する問題