开发者

GetUserName under Win64

I am trying to compile a C program using the Intel icl compiler under MINGW/64. The program uses the following code:

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

I am using the following compile command:

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

and I am linking against the UserEnv.Lib from the Microsoft SDK.

Intel(R) C++ Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version Microsoft (R) Incremental Linker Version 9.00.21022.08 -out:user.exe user.obj

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

Any idea how to solve this problem?

SOLUTION:

The solution is to use

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


I copied the file UserEnv.lib from the Microsoft SDK (x64, 6.0) into the current working directory 开发者_JAVA技巧and compiled the program with

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

LNK2019: unresolved external symbol __imp_GetUserNameA referenced in function main test.obj : error LNK2019: unresolved external symbol __imp_OpenProcessToken referenced in function main test.obj : error LNK2019: unresolved external symbol –

and I am still getting the unresolved symbols.

Olaf


You need to add userenv.lib to your input libraries for the linker to see GetUserProfileDirectory().

EDIT: It's been a while since I've touched an Intel compiler, but IIRC you're supposed to use /link to introduce linker options:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜