J’ai une erreur fatale sur mon projet, l’erreur vient de sspi.h, je dois définir quelque chose mais je ne suis pas quoi et pourquoi, s’il vous plaît, expliquez quelqu’un.
sspi.h(60): fatal error C1189: #error : You must define one of SECURITY_WIN32, SECURITY_KERNEL, or SECURITY_MAC
Bien que le diagnostic soit clair sur le fait de devoir en définir un parmi SECURITY_WIN32
, SECURITY_KERNEL
ou SECURITY_MAC
, cela n’aide pas beaucoup à déterminer lequel utiliser et pourquoi. À ma connaissance, aucun de ces éléments n’est officiellement documenté dans MSDN. La seule source d’information est donc les fichiers d’en-tête réels.
SECURITY_MAC
: Ce symbole apparaît uniquement dans 1992-1999
. Vraisemblablement, ce symbole a été introduit pour prendre en charge la compilation pour Mac OS «classique», alors que MFC était toujours conçu pour être un framework multi-plateforme ciblant à la fois Windows et Mac. Le symbole ne semble pas être d’une utilité pratique aujourd’hui.
SECURITY_KERNEL
: Le commentaire le plus instructif est de // Can't use the windows.h def'ns in kernel mode.
. Cela semble indiquer que le symbole SECURITY_KERNEL
doit être défini lors de l’access au package de sécurité à partir d’un module exécuté en mode kernel.
SECURITY_WIN32
: Il n’y a aucun commentaire sur ce symbole dans tout le SDK Windows. Il semble plausible que ce symbole soit utilisé lors de l’access à l’API de sécurité à partir d’une application en mode utilisateur.
En supposant que tout ce qui précède soit correct, les directives suivantes peuvent être utilisées pour déterminer le symbole à définir:
SECURITY_WIN32
lors de la compilation d’une application en mode utilisateur. SECURITY_KERNEL
lors de la compilation d’un module en mode kernel. SECURITY_MAC
obsolète. Ajoutez simplement
#define SECURITY_WIN32
avant tout comprend