@Eugene. Я не смог заставить работать директивы препроцессора. Вместо этого я использовал Platform Toolset и переключился обратно на 6.0A, и он заработал, не теряя ничего, кроме имени поставщика RSA_AES_XP. Я добавил директиву препроцессора, если это дает какое-то представление о том, как я все еще могу полагаться на манипулирование директивами препроцессора. Спасибо
еделение дляC:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinCrypt.h
являетсяCERT_CHAIN_ENGINE_CONFIG
Я использую Visual Studio 2010 на машине с XP sp3, и в этом случае я ожидаю, что следующие два члена в вышеупомянутой структуре будут выделены серым цветом. Но этого не происходит,
typedef struct _CERT_CHAIN_ENGINE_CONFIG {
DWORD cbSize;
HCERTSTORE hRestrictedRoot;
HCERTSTORE hRestrictedTrust;
HCERTSTORE hRestrictedOther;
DWORD cAdditionalStore;
HCERTSTORE* rghAdditionalStore;
DWORD dwFlags;
DWORD dwUrlRetrievalTimeout; // milliseconds
DWORD MaximumCachedCertificates;
DWORD CycleDetectionModulus;
*#if (NTDDI_VERSION >= NTDDI_WIN7)
HCERTSTORE hExclusiveRoot;
HCERTSTORE hExclusiveTrustedPeople;
#endif*
} CERT_CHAIN_ENGINE_CONFIG, *PCERT_CHAIN_ENGINE_CONFIG;
в свою очередь определяется в
#if (NTDDI_VERSION >= NTDDI_WIN7)
HCERTSTORE hExclusiveRoot;
HCERTSTORE hExclusiveTrustedPeople;
#endif
NTDDI_VERSION
следующим образом, иsdkddkver.h
как-то принимает значение_WIN32_WINNT
что в моем случае неверно, так как мой XP XP SP3 машина.NTDDI_WIN7
Вышеуказанные два члена структуры
#if !defined(_WIN32_WINNT) && !defined(_CHICAGO_)
#define _WIN32_WINNT 0x0601
#endif
#ifndef NTDDI_VERSION
#ifdef _WIN32_WINNT
// set NTDDI_VERSION based on _WIN32_WINNT
#define NTDDI_VERSION NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT)
#else
#define NTDDI_VERSION 0x06010000
#endif
#endif
в вопросе нет вCERT_CHAIN_ENGINE_CONFIG
Но мой проект Visual Studio 2010 автоматически извлекает заголовочные файлы и файлы изC:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WinCrypt.h
Из-за конфликтующих структур я получаюC:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinCrypt.h
Посоветуйте, пожалуйста, как я могу решить эту проблему?parameter is incorrect
Должен ли я установить Visual Studio 2010 SP1?
нашел одну ссылку в сети
Настройки моего проекта:
$ (VCInstalDir) -> C: \ Program Files \ Microsoft Visual Studio 10.0 \ VC
$ (WindowsSdkDir) -> C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A
$ (FrameworkSdkDir) -> C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A
Настройки файла библиотеки,
ОБНОВЛЕНИЕ 2:
$(VCInstallDir)lib
$(VCInstallDir)atlmfc\lib
$(WindowsSdkDir)lib
$(FrameworkSDKDir)\lib
Мои определения препроцессора% (PreprocessorDefinitions) унаследовал значения следующим образом
WIN32;_DEBUG;_WINDOWS;_USRDLL;MY_DLL_EXPORTS;%(PreprocessorDefinitions)
Спасибо
_WINDLL
_MBCS
Проблема, которую вы имеете, может быть очень легко объяснена. Если вы используете v7.0A или v7.1, вы можете скомпилировать свой проект, чтобы он работал под Windows 7. Так что значение по умолчанию для