GetUserName под Win64 - PullRequest
       0

GetUserName под Win64

0 голосов
/ 20 ноября 2010

Я пытаюсь скомпилировать программу на C, используя компилятор Intel icl в MINGW / 64. Программа использует следующий код:

#include <Userenv.h>
HANDLE process;
HANLDE token;
GetUserProfileDirectory(process, TOKEN_QUERY, &ptoken)

Я использую следующую команду компиляции:

$ icl -g -DMINGW32 -DTESTMAIN user.c -o user -UserEnv.Lib

и я ссылаюсь на UserEnv.Lib из Microsoft SDK.

Intel (R) C ++ Intel (R) 64 Compiler XE для приложений, работающих на Intel (R) 64, версия Microsoft (R), инкрементный компоновщик, версия 9.00.21022.08 отъезда: User.exe user.obj

user.obj : error LNK2019: unresolved external symbol __imp_GetUserProfileDirectoryA referenced in function main

Есть идеи, как решить эту проблему?

РЕШЕНИЕ:
Решение заключается в использовании

/ link / c / Program \ Files / Microsoft \ SDKs / Windows / v6.0A / Lib / x64 / UserEnv.Lib / c / Program \ Files / Microsoft \ SDKs / Windows / v6.0A / Lib / x64 / A


Я скопировал файл UserEnv.lib из Microsoft SDK (x64, 6.0) в текущий рабочий каталог и скомпилировал программу с

$ icl test.c -DMINGW32 ./UserEnv.Lib

LNK2019: неразрешенный внешний символ __imp_GetUserNameA, на который ссылается функция main test.obj: ошибка LNK2019: неразрешенный внешний символ __imp_OpenProcessToken, на который ссылается функция main test.obj: ошибка LNK2019: неразрешенный внешний символ -

и я все еще получаю неразрешенные символы.

Olaf

1 Ответ

0 голосов
/ 20 ноября 2010

Вам нужно добавить userenv.lib в свои входные библиотеки, чтобы компоновщик увидел GetUserProfileDirectory () .

РЕДАКТИРОВАТЬ: Прошло много времени с тех пор, как я коснулся компилятора Intel, но IIRC вы должны использовать /link, чтобы представить опции компоновщика:

$ icl test.c -DMINGW32 /link ./UserEnv.Lib
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...