首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSPI头文件-致命错误

SSPI头文件-致命错误
EN

Stack Overflow用户
提问于 2012-07-19 21:02:56
回答 3查看 6.4K关注 0票数 14

我在我的项目上得到了一些致命的错误,错误来自sspi.h,我必须定义一些东西,但我不是什么和为什么,请有人解释。

代码语言:javascript
复制
sspi.h(60): fatal error C1189: #error :   You must define one of SECURITY_WIN32, SECURITY_KERNEL, or SECURITY_MAC
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-19 21:32:30

只需添加

代码语言:javascript
复制
#define SECURITY_WIN32 

在所有包含之前

票数 5
EN

Stack Overflow用户

发布于 2017-10-20 16:22:25

虽然诊断很清楚必须定义SECURITY_WIN32SECURITY_KERNELSECURITY_MAC中的一个,但它对确定使用哪一个以及为什么使用没有太大帮助。据我所知,这些都没有在MSDN中正式记录,因此唯一的信息来源是实际的头文件。

  • SECURITY_MAC:此元件仅出现在带有1992-1999版权声明的文件中。据推测,这个符号的引入是为了支持"Classic“Mac OS的编译,当时MFC还计划成为一个针对Windows和Mac的跨平台框架。这个符号似乎没有任何实际用途,这里最有启发性的评论来自,他读到了// Can't use the windows.h def'ns in kernel mode.。这似乎表明需要定义SECURITY_KERNEL符号,当从内核mode.
  • SECURITY_WIN32:中运行的模块访问安全包时,在整个Windows SDK中根本没有关于该符号的注释。当从用户模式application.

访问security API时,应该使用这个符号,这似乎是合理的。

假设以上所有内容都正确,则可以使用以下准则来确定要定义的符号:

编译内核模式application.

  • Define时定义SECURITY_WIN32编译用户模式
  • 时定义SECURITY_WIN32编译内核模式时定义过时的SECURITY_MAC预处理器符号。
票数 19
EN

Stack Overflow用户

发布于 2020-01-13 02:14:05

在现有答案的基础上,更可取的定义方式是

代码语言:javascript
复制
#ifndef SECURITY_WIN32 
#define SECURITY_WIN32 
#endif

你可以在#include这个有问题的头文件之前添加它,或者在第一次调用windows.h或afxwin.h或其他任何东西之前将它添加到你的stdafx.h (如果你正在使用)中,在你定义WINVER和_WIN32_WINNT的同时,当然你也可以将它添加到你的项目设置中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11561475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档