LNK2019 SHLoadIndirectString的未解析外部符号

LNK2019 unresolved external symbol for SHLoadIndirectString

本文关键字:外部 符号 SHLoadIndirectString LNK2019      更新时间:2023-10-16

我正试图以间接字符串的形式从资源中提取字符串。对于当前的例子,我只是为Windows10内置的一个APPS取了一个间接字符串。然而,此代码在VisualStudio2015中返回错误,我不确定原因。

我知道,当定义丢失时,可能会产生未解析的外部符号链接器错误,但在我的情况下,我使用的是Microsoft Windows Function,并且我包含了正确的头文件,因此我不清楚Visual Studio为什么会返回这样的错误。

我在网上找不到任何关于那个案子的有用信息。

这是我的示例代码:

#include "stdafx.h"
#include <Shlwapi.h>

int main()
{
    LPWSTR output = L"";
    LPWSTR input = L"@{Microsoft.BingFinance_4.8.268.0_x86__8wekyb3d8bbwe?ms-resource://Microsoft.BingFinance/Resources/ApplicationTitle}";
    int result = ::SHLoadIndirectString(input, output, sizeof(output), NULL );
    // printf("String result: %s n", output);
    return 0;
}

这是一个错误:

错误LNK2019未解析的外部符号__imp__SHLoadIndirectString@16在函数_main 中引用

除了包含头(用于编译时定义)外,还需要在"Shlwapi.lib"中进行链接以进行链接时符号解析。

Shlwapi.lib可以添加到项目链接器设置下的"附加依赖项"中。

通常,Windows API函数的MSDN文档包括对该函数的要求和可用性的描述,其中包括支持的操作系统,以及需要使用的头和库。