1

Я пытаюсь использовать функцию ConvertSidToStringSid() в проекте консоли Visual Studio 2015 Community.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 Home, 64-разрядный компьютер. У меня есть * .lib и * .dll файлов соответственно:

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

Когда я заполнить «#inclucde» в stdafx.h, я не получаю сообщение об ошибке от Intellisense. Напротив, «#include <blah.h>» дает красную подсветку под заголовком «include», а подсказка говорит «Ошибка: не удается открыть исходный файл« blah.h ».

В моем исходном файле .cpp, который включает в себя «stdafx.h», добавить код

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

, но затем я получаю красный покачивание под ConvertSidToStringSidW.

В обозревателе решений под проектом в разделе Внешние зависимости находятся файлы 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 

компилирование еще терпит неудачу с «идентификатор ххх не определен» и «ххх»: идентификатор не найден, из IntelliSense и Build соответственно.

Заголовок sddl.h по-прежнему не во внешних зависимостях. Щелкните правой кнопкой мыши на sdksddkver.h. Я получаю полный путь: недавно добавленный дополнительный каталог include. Я не знаю, что это было до того, как я добавил этот каталог include.

Щелкните правой кнопкой мыши на директиве include в stdafx.h, я могу открыть sddl.h. Редактор отображает части содержимого в светло-сером цвете, когда содержимое защищается директивой # if/# ifdef, аргумент которого является ложным. Однако функция, которую я хочу использовать, ConvertSidToStringSid, отображается в полном цвете.

Непонятно, существует ли у него ключ, согласно которому сообщения об ошибках говорят «определенные», а не «объявленные». В свойствах проекта перечислены ссылки, входные данные, дополнительные зависимости, файл advapi32.lib.

Что я делаю неправильно?

ответ

1

Я нашел решение самостоятельно. Проблема заключалась в том, что у меня было два проекта в одном и том же «решении», каждый со своим файлом stdafx.h. У меня был неправильный файл stdafx.h, открытый в редакторе, и поместил директиву #include в неправильный файл.

-Положения

Смежные вопросы