2019链接错误-c++

2019 link error - c++

本文关键字:-c++ 错误 链接 2019      更新时间:2023-10-16

我在VS2010中编写了以下代码片段:

#pragma once
#include "stdafx.h"
#ifndef SECURITY_WIN32
#define SECURITY_WIN32
#endif
#include "windows.h"
#include "sspi.h"
int main( void )
{
    ULONG cPackages = 0;
    PSecPkgInfo pInfo = NULL;
    SECURITY_STATUS stat = EnumerateSecurityPackages(&cPackages, &pInfo);
    if (stat == SEC_E_OK) 
    { 
        for (ULONG i = 0; i < cPackages; i++) 
        { 
            wprintf(L"%st%sn",pInfo[i].Name, pInfo[i].Comment); 
        } 
        FreeContextBuffer(pInfo); 
    } 
    return 0; 
}

但是,在编译时,我得到了以下错误:

错误LNK2019:未解析的外部符号_imp_EnumerateSecurityPackagesW@8在函数_main 中引用

错误LNK2019:未解析的外部符号_FreeContextBuffer@4在函数_main 中引用

有人能帮我吗?

您需要针对Secur32.lib进行链接。

转到Project Properties -> Linker -> Input并在列表中添加Secur32.lib

链接错误"未解析的外部符号"通常意味着没有添加所需的库来解析符号。在VC++的情况下,你得到了没有修饰的符号FreeContextBuffer(这将是错过的函数),转到http://msdn.microsoft.com并搜索该功能的相关文章。在这种情况下,它将生成"FreeContextBuffer"作为第一个结果。然后,您可以查找最后一节"需求",并找出编译器和链接器-Secur32.lib的库(您的情况)需要什么标头。然后,在IDE的属性->linker->Input中添加此库。或者使用代码中的#pragma comment()指令。希望这会有所帮助。

#include "stdafx.h"

是为了包含"系统"接口,很可能windows.h已经包含了。因此,在任何其他include之前,请尝试将#define移动到stdafx.h中。