我正在尝试使用MINGW / 64下的Intel icl编译器编译C程序。该程序使用以下代码:
#include <Userenv.h>
HANDLE process;
HANLDE token;
GetUserProfileDirectory(process, TOKEN_QUERY, &ptoken)
我使用以下编译命令:
$ icl -g -DMINGW32 -DTESTMAIN user.c -o user -UserEnv.Lib
我正在链接来自Microsoft SDK的UserEnv.Lib。
英特尔(R)C ++英特尔(R)64编译器XE,适用于在英特尔(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
知道如何解决这个问题吗?
SOLUTION:
解决方案是使用
/ link / c / Program \ Files / Microsoft \ SDKs / Windows / v6.0A / Lib / x64 / UserEnv.Lib / c / Program \ Files / Microsoft \ SDKs / Windows / v6.0A / Lib / x64 /甲
我将Microsoft SDK(x64,6.0)中的UserEnv.lib文件复制到当前工作目录中并使用
编译程序$ icl test.c -DMINGW32 ./UserEnv.Lib
LNK2019:函数main test.obj中引用的未解析的外部符号__imp_GetUserNameA:错误LNK2019:函数main test.obj中引用的未解析的外部符号__imp_OpenProcessToken:错误LNK2019:未解析的外部符号 -
我仍然得到未解决的符号。
奥拉夫
答案 0 :(得分:0)
您需要将userenv.lib
添加到输入库,以便链接器查看GetUserProfileDirectory()。
编辑:自从我接触到英特尔编译器以来已经有一段时间了,但是IIRC您应该使用/link
来引入链接器选项:
$ icl test.c -DMINGW32 /link ./UserEnv.Lib