我在我的項目上得到了一些致命錯誤,錯誤是來自sspi.h,我必須定義一些東西,但我不是什麼,爲什麼,請有人解釋。SSPI頭文件 - 致命錯誤
sspi.h(60): fatal error C1189: #error : You must define one of SECURITY_WIN32, SECURITY_KERNEL, or SECURITY_MAC
我在我的項目上得到了一些致命錯誤,錯誤是來自sspi.h,我必須定義一些東西,但我不是什麼,爲什麼,請有人解釋。SSPI頭文件 - 致命錯誤
sspi.h(60): fatal error C1189: #error : You must define one of SECURITY_WIN32, SECURITY_KERNEL, or SECURITY_MAC
只需添加
#define SECURITY_WIN32
所有包括
之前雖然診斷是明確其定義的SECURITY_WIN32
一個,SECURITY_KERNEL
,或SECURITY_MAC
,它並沒有多大幫助確定哪些一個使用和爲什麼。據我所知,這些都沒有正式記錄在MSDN中,所以唯一的信息來源是實際的頭文件。
SECURITY_MAC
:此符號永遠只能出現在<sspi.h>,與1992-1999
版權聲明的文件。據推測,這個符號是爲支持編譯「Classic」Mac OS而推出的,當時MFC仍然計劃成爲針對Windows和Mac的跨平臺框架。該符號今天似乎沒有任何實際用途。
SECURITY_KERNEL
:這裏最有啓發性的評論是從<NTSecPKG.h>,閱讀// Can't use the windows.h def'ns in kernel mode.
。這似乎表明需要定義SECURITY_KERNEL
符號,即從內核模式下運行的模塊訪問安全軟件包的內容。
SECURITY_WIN32
:在整個Windows SDK中根本沒有對此符號的評論。從用戶模式應用程序訪問安全API時,應該使用此符號似乎是合理的。
假設上述所有都正確,以下指南可在確定符號來定義使用:
SECURITY_WIN32
。SECURITY_KERNEL
。SECURITY_MAC
預處理器符號。
如果有人想提供更多細節(例如,爲什麼這是必要的,它做了什麼/它的意思,以及另一個'SECURITY_ *'定義的意思)是否有幫助,我沒有迄今爲止能夠找到很多信息。 – jrh 2017-05-08 19:24:30
@jrh:我開始自己挖掘信息,但也是空手而歸。我確實將我的發現編譯成了一個答案,至少比推薦*「做這個(並祈禱)」*更完整。 – IInspectable 2017-10-20 08:27:08