当前位置: 首页 > 知识库问答 >
问题:

错误:LNK1120:5个未解析的外部

詹斌蔚
2023-03-14

我试图在我的帖子中获取有关已安装应用程序的详细信息。而且,我收到了以下错误:

代码

#include <iostream>
#include <string>
#include <windows.h>

using namespace std;

#ifdef _UNICODE
#define tcout       wcout
#define tstring     wstring
#else
#define tcout       cout
#define tstring     string
#endif

tstring RegistryQueryValue(HKEY hKey,
    LPCTSTR szName)
{
    tstring value;

    DWORD dwType;
    DWORD dwSize = 0;

    if (::RegQueryValueEx(
        hKey,                   // key handle
        szName,                 // item name
        NULL,                   // reserved
        &dwType,                // type of data stored
        NULL,                   // no data buffer
        &dwSize                 // required buffer size
        ) == ERROR_SUCCESS && dwSize > 0)
    {
        value.resize(dwSize);

        ::RegQueryValueEx(
            hKey,                   // key handle
            szName,                 // item name
            NULL,                   // reserved
            &dwType,                // type of data stored
            (LPBYTE)&value[0],      // data buffer
            &dwSize                 // available buffer size
            );
    }

    return value;
}

void RegistryEnum()
{
    HKEY hKey;
    LONG ret = ::RegOpenKeyEx(
        HKEY_LOCAL_MACHINE,     // local machine hive
        __TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall"), // uninstall key
        0,                      // reserved
        KEY_READ,               // desired access
        &hKey                   // handle to the open key
        );

    if (ret != ERROR_SUCCESS)
        return;

    DWORD dwIndex = 0;
    DWORD cbName = 1024;
    TCHAR szSubKeyName[1024];

    while ((ret = ::RegEnumKeyEx(
        hKey,
        dwIndex,
        szSubKeyName,
        &cbName,
        NULL,
        NULL,
        NULL,
        NULL)) != ERROR_NO_MORE_ITEMS)
    {
        if (ret == ERROR_SUCCESS)
        {
            HKEY hItem;
            if (::RegOpenKeyEx(hKey, szSubKeyName, 0, KEY_READ, &hItem) != ERROR_SUCCESS)
                continue;

            tstring name = RegistryQueryValue(hItem, __TEXT("DisplayName"));
            tstring publisher = RegistryQueryValue(hItem, __TEXT("Publisher"));
            tstring version = RegistryQueryValue(hItem, __TEXT("DisplayVersion"));
            tstring location = RegistryQueryValue(hItem, __TEXT("InstallLocation"));

            if (!name.empty())
            {
                tcout << name << endl;
                tcout << "  - " << publisher << endl;
                tcout << "  - " << version << endl;
                tcout << "  - " << location << endl;
                tcout << endl;
            }

            ::RegCloseKey(hItem);
        }
        dwIndex++;
        cbName = 1024;
    }
    ::RegCloseKey(hKey);
}

void main(){
    RegistryEnum();
}

错误:

LNK1120:5个未解析的外部

LNK2019:未解析的外部符号\u imp_RegCloseKey@4在函数“void \uu cdecl RegistryEnum(void)”中引用(?RegistryEnum@@YAXXZ)

LNK2019:未解析的外部符号\u imp_RegEnumKeyExW@32在函数“void \uu cdecl RegistryEnum(void)”中引用(?RegistryEnum@@YAXXZ)

LNK2019:未解析的外部符号\u imp_RegOpenKeyExW@20在函数“void \uu cdecl RegistryEnum(void)”中引用(?RegistryEnum@@YAXXZ)

LNK2019:未解析的外部符号imp__RegQueryValueExW@24引用在函数"类std::basic_string,类std::allocator

LNK2019:函数__tmainCRTStartup中引用的未解析外部符号wWinMain@16

请问我该怎么修?

共有1个答案

姜晨
2023-03-14

您必须与Advapi32.lib链接。

 类似资料:
  • 我正在尝试使用以下代码将bmp图像转换为png图像: 执行此代码会触发以下错误: LNK1120:9个未解析的外部 LNK2019:函数“int \uu cdecl save\u png\u to\u file(struct \u RGBBitmap*,char const*)”中引用的未解析外部符号\u png\u create\u info\u struct(?save\u png\u to\

  • 我得到了这个错误,但我不知道如何修复它。 我正在使用Visual Studio 2013。我将解决方案命名为MyProjectTest这是我的测试解决方案的结构: -功能。H -功能。cpp -main.cpp 我是初学者;这是一个简单的程序,运行时没有错误。我在互联网上阅读并对单元测试感兴趣,因此我创建了一个测试项目: 菜单文件→新建→项目...→已安装→模板→Visual C→测试→本地单元测

  • 第22行是: 我不知道为什么我会得到这个,我已经检查了我的语法,所有似乎是正确的。它基本上不喜欢执行查询后的任何内容 编辑: 我明白这是容易SQL注入,但我这样做只是为了测试目的。

  • 问题内容: 我有这个行代码 在我的本地(WAMP)php 5.4.3上运行良好,但是当我将其托管在服务器cpanel上时,它将给出此错误 我服务器上的php版本是5.2.17 我没有发现任何问题,请帮忙 问题答案: 您需要运行PHP 5.4+才能使用速记数组

  • 问题内容: 调试代码时出现此错误: PHP解析错误:语法错误,第72行的order.php中出现意外的T_OBJECT_OPERATOR 这是代码段(从第72行开始): 问题答案: 不幸的是,不可能在刚用PHP 5.4之前创建的对象上调用方法。 在PHP 5.4和更高版本中,可以使用以下内容: 注意必填的括号对。 在以前的版本中,必须在变量上调用方法:

  • 我发现php endif出现错误,找不到错误。这里我给出了我的代码。请帮我修一下