1

コンソールプロジェクトのVisual Studio 2015コミュニティでConvertSidToStringSid()関数を使用しようとしています。Visual Studio 2015 C++ sddl.hが外部依存として表示されない

MSDNのページによると

https://msdn.microsoft.com/en-us/library/windows/desktop/aa376399(v=vs.85).aspx

要件は次のとおりです。

Minimum supported client: Windows XP [desktop apps only] 
Minimum supported server: Windows Server 2003 [desktop apps only] 
Header: sddl.h 
Library: Advapi32.lib 
DLL:  Advapi32.dll 

私は、Windows 10のホーム、64ビットコンピュータを使用しています。私はstdafx.hをの「#inclucde」に記入した場合、私はインテリセンスからのエラーを取得していない

C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64\AdvAPI32.Lib 
C:\Windows\System32\advapi32.dll 

:私はでそれぞれ* .libファイルと* .dllファイルを持っています。対照的に、 "#include <blah.h>"は、 "include"の下に赤い揺れの下線を、マウスオーバーには "Error:ソースファイル" blah.h "を開くことができません。 「stdafx.hを」を含む私の.cppソースファイルでは、

は、私がコード

BOOL OK ... ; 
    PSID owner; 
    char *sOwner; 
    OK = ConvertSidToStringSidW(owner, sOwner); 

を追加したが、その後、私はConvertSidToStringSidW下の赤いウィグルを取得します。

ソリューションエクスプローラで、プロジェクトの外部依存下に、これらの2つの間にSCardErr.hとsdkddkver.hというファイルがありますが、何もないsddl.hはありません。 (そして、sddkver.hは_WIN32_WINNT_THRESHOLD 0x0A00を定義しています。エディタでIntelliSenseでテストすると、_WIN32_WINNTも0x0A00です)

コンパイルすると、まずsddl.hファイルが見つかりませんでしたというエラーメッセージが表示されます。私は、コンピュータ上の複数のコピーを持っているし、すべての構成については、「その他には、ディレクトリ」、

C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared 

コンパイルはまだ「識別子xxxは未定義である」と「XXX」で失敗したディレクトリに追加:から、識別子が見つかりません。 IntelliSenseおよびBuildをそれぞれ使用します。

ヘッダーsddl.hはまだ外部の依存関係にありません。 sdksddkver.hを右クリックすると、そのフルパスが取得されます:新たに追加された追加のインクルードディレクトリ。私はこのインクルードディレクトリを追加する前に何があったのかわかりません。

stdafx.hのincludeディレクティブを右クリックすると、sddl.hを開くことができます。エディタは、引数がfalseの#if /#ifdefディレクティブによって内容が保護されているときに、内容の一部を明るい灰色の色で表示します。ただし、使用する関数ConvertSidToStringSidはフルカラーで表示されます。

エラーメッセージが「宣言」ではなく「定義済み」と言っているかどうか不明です。プロジェクトのプロパティ、リンカー、入力、その他の依存関係では、ファイルadvapi32.libが一覧表示されます。

私は間違っていますか?

答えて

1

私自身が解決策を見つけました。問題は、同じ "ソリューション"に2つのプロジェクトがあり、それぞれに独自のstdafx.hファイルがあることでした。エディタで間違ったstdafx.hファイルを開いて、#includeディレクティブを間違ったファイルに配置しました。

-thanks

関連する問題