我试图用Intel icl编译器在MINGW/64下编译一个C程序。该程序使用以下代码:
#include <Userenv.h>
HANDLE process;
HANLDE token;
GetUserProfileDirectory(process, TOKEN_QUERY, &ptoken)我使用以下编译命令:
$ icl -g -DMINGW32 -DTESTMAIN user.c -o user -UserEnv.Lib我正在链接到Microsoft中的UserEnv.Lib。
英特尔(R) C++英特尔(R) 64编译器XE用于运行在Intel(R) 64、Microsoft (R)增量链接器版本9.00.21022.08 -out: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 (x64,6.0)复制到当前工作目录中,并使用
$ icl test.c -DMINGW32 ./UserEnv.Lib
LNK2019:函数main test.obj中引用的未解析外部符号__imp_GetUserNameA : LNK2019:函数main test.obj中引用的未解析外部符号__imp_OpenProcessToken :错误LNK2019:未解析外部符号-
而我仍然得到了那些未解决的符号。
奥拉夫
发布于 2010-11-20 12:07:38
您需要将userenv.lib添加到输入库中,链接器才能看到GetUserProfileDirectory()。
编辑:--我已经有一段时间没有接触到Intel编译器了,但是IIRC您应该使用/link来引入链接器选项:
$ icl test.c -DMINGW32 /link ./UserEnv.Libhttps://stackoverflow.com/questions/4232365
复制相似问题