Friday, 4 May 2018

c++ - error: LNK1120: 5 unresolved externals



I'm trying to get details about installed applications in my post. And, I'm getting the below errors:



Code:



#include 
#include

#include

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();
}


Errors:




LNK1120: 5 unresolved externals




LNK2019: unresolved external symbol _imp_RegCloseKey@4 referenced in
function "void __cdecl RegistryEnum(void)" (?RegistryEnum@@YAXXZ)



LNK2019: unresolved external symbol _imp_RegEnumKeyExW@32 referenced
in function "void __cdecl RegistryEnum(void)" (?RegistryEnum@@YAXXZ)



LNK2019: unresolved external symbol _imp_RegOpenKeyExW@20 referenced
in function "void __cdecl RegistryEnum(void)" (?RegistryEnum@@YAXXZ)



LNK2019: unresolved external symbol imp__RegQueryValueExW@24

referenced in function "class std::basic_string,class std::allocator > __cdecl
RegistryQueryValue(struct HKEY
*,wchar_t const *)"
(?RegistryQueryValue@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@W@2@@std@@PAUHKEY_@@PB_W@Z)



LNK2019: unresolved external symbol wWinMain@16 referenced in
function _
_tmainCRTStartup




How may I fix this please?


Answer




You must link with the Advapi32.lib.


No comments:

Post a Comment

casting - Why wasn&#39;t Tobey Maguire in The Amazing Spider-Man? - Movies &amp; TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...