2019链接错误 - c ++

时间:2012-03-26 14:04:19

标签: c++ visual-studio-2010 linker-errors

我在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"%s\t%s\n",pInfo[i].Name, pInfo[i].Comment); 
        } 
        FreeContextBuffer(pInfo); 
    } 
    return 0; 

}

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

  

错误LNK2019:未解析的外部符号   函数_main

中引用了_ imp _EnumerateSecurityPackagesW @ 8

  

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

中引用

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:5)

您需要关联Secur32.lib

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

答案 1 :(得分:2)

链接错误“未解析的外部符号”通常意味着没有添加必需的库(库)来解析符号。在VC ++的情况下,你得到没有装饰FreeContextBuffer的符号(这将是错过的函数),转到http://msdn.microsoft.com并搜索此函数的相关文章。在这种情况下,它将产生"FreeContextBuffer"作为第一个结果。然后,您将查找最后一节“要求”,并找出链接器-Secur32.lib的编译器和库(您的情况)需要哪些头。然后,在IDE的 Properties - &gt;中添加此库。链接器 - &gt;输入。或者在代码中使用#pragma comment()指令。 希望这会有所帮助。

答案 2 :(得分:0)

#include "stdafx.h"

用于包含'系统'接口,它可能已经包含在windows.h中。因此,在任何其他包含之前,尝试将你的#define移到stdafx.h中。