@evelone1379

Как исправить ошибку LNK2001 unresolved external symbol __imp_GetUserNameW C++?

Вызываю простейший код, выходит такая ошибка
#include <Windows.h>
#include <iostream>
#include <Lmcons.h> 
int main()
{
    TCHAR username[UNLEN + 1];
    DWORD size = UNLEN + 1;
    GetUserName((TCHAR*)username, &size);

    std::cout << username;
    return 0;
}

Ошибка:
LNK2001 unresolved external symbol __imp_GetUserNameW	Application

644566960b619539959932.png
  • Вопрос задан
  • 128 просмотров
Решения вопроса 3
TrueBers
@TrueBers
Гуглю за еду
Гуглим название функции: GetUserNameW.
Заходим по первой же ссылке на документацию Microsoft.
Там спускаемся в раздел Requirements.
В строке "Library" видим Advapi32.lib.

Теперь гуглим текст ошибки LNK2001 unresolved external symbol и переходим по первой ссылке, которая снова, внезапно, по невероятному стечению обстоятельств оказывается документацией Microsoft.
Там читаем описание ошибки, и что нужно сделать, чтобы её устранить. Там даже ссылка на StackOverflow оставлена!

2 основных варианта: либо в настройках проекта добавляем эту библиотеку к списку линкуемых, либо прямо в коде говорим линкеру #pragma comment(lib, "Advapi32").
Браво! Вы великолепны!
Да ещё и потратили в 3 раза меньше времени, чем писать сюда вопрос.

Не сложно, если захотеть, правда?
Ответ написан
Комментировать
@dima20155
you don't choose c++. It chooses you
Вы настроили Linker перед компилияцией?
Вероятно, самым простым способом будет выбрать другой тип проекта (desktop под windows)
Или же настройте Linker самостоятельно (.lib + точка входа + тип приложения)
Ответ написан
Надо добавить в линкер Advapi32.lib
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы