Я пытаюсь скомпилировать программу на 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