1

私は SetDllDirectory() を利用しており、Windows 7 HP 64 ビットのディレクティブを定義する方法を知りたいのですが、次のようなことを考えています:

プリプロセッサ ディレクティブ:

 Add WIN7

.cpp で、次のようなものを追加することを考えていました

#ifndef WIN7<- where the function is used
SetDllDirectory();
#endif

しかし、ステートメントを追加するとすぐに、SetDllDirectory がコメント化されます。

そして、これは私が試したものです。プリプロセッサの定義にWIN7を追加し、追加しました:

#if defined(__WIN7__)
if (regkeyExists) {
    if (regkey->HasValue("LibPath")) {
        regkey->QueryValue("LibPath", value);
        if (!value.empty()) {
            wxSetEnv("ABCLib", value);
            SetDllDirectory(value.c_str());
        }
    }

}
SetDllDirectory("C:\\Program Files\\ABC\\ABCProject\\lib");
#endif

これはWindows 7を宣言する権利ですか

ありがとう

4

2 に答える 2

2

Windows 7 を検出するために独自のマクロを定義したくない場合は、Microsoft が提供するものを使用してください。Win7 のみのコードを次のようにラップします。

#ifdef _WIN32_WINNT_WIN7 
xyz()
#endif

独自に作成する場合は、Windows 7 用にコンパイルするときに定義する必要があります。SelDllDirectory() 関数を隠しているようです - #ifndef は「定義されていない場合」を意味するため、WIN7 マクロがどこにも定義されていない場合、次に、その機能を取得します。

于 2012-08-21T09:43:44.873 に答える
1

どうNTDDI_VERSIONですか_WIN32_WINNT

于 2012-08-21T09:41:47.253 に答える