2017-05-28 8 views
-2

質問はthisと同じですが、解決策は私のためには機能しません。`DebugActiveProcessStop 'は宣言されていません(最初にこの関数を使用してください)

DebugActiveProcessStop関数のドキュメントによると、サポートされている最小限のクライアントはWindows XPです。私はWindows 7を使用しています。

// #ifdef _WIN32_WINNT 
// #undef _WIN32_WINNT 
// #endif 

#define NTDDI_VERSION 0x05010000 
// #define _WIN32_WINNT 0x0502 

#include <iostream> 
#include <windows.h> 

using namespace std; 

class CppDBG 
{ 
    ... 
    public: 
     BOOL detach (void); 
     ... 
}; 

... 

BOOL CppDBG :: detach (void) 
{ 
    if (DebugActiveProcessStop(pid)) { 
     cout << "[+] Finished debugging. Exiting..."; 
     return true; 
    } 
    else { 
     cout << "[-] Error" << endl; 
     return false; 
    } 
} 

int main() 
{ 
    CppDBG dbg; 
    ... 
    dbg.detach(); 
    return 0; 
} 
+1

「私はWindows 7を使用しています」 - そして何ですか?コードをコンパイルするシステムに関係なく絶対的です。あなたが使用する* sdk *バージョンだけが重要です(そして、まったく使用していません)。 * sdk *を使用する場合、 'DebugActiveProcessStop'が宣言されている場所を単純に検索し、それを条件ブロック(*#if *)に入れてこの条件に従います。 – RbMm

答えて

0

あなたのIDEには古いバージョンのWindows APIがインストールされていると思います。

エラーは、コンパイラが、DebugActiveProcessStopが何であるかをコンパイラが知らないというエラーです。コンパイラの場合、これは何でもかまいません(変数、定数など)。このエラーは、システムが動作しているWindowsのバージョンとは関係ありません。

これを修正するには、マイクロソフトからWindows SDKをダウンロードし、使用するようにコンパイラに指示します(インクルードディレクトリ、ライブラリパスなどを変更してください)。これは、使用しているIDEによって大きく異なります。しかし、インターネットは十分な助けを提供する必要があります。

+0

コンパイラがMinGWの場合、 Windows 2000の後に導入されたAPIはありません。代わりにMinGW-w64を入手してください。常に更新されています。 – andlabs

関連する問題