VS2013 编译的问题

最近安装了一个 VS2013进行 UEFI 的编译,碰到了其怪的错误:

"C:\Program Files\Microsoft Visual Studio 12.0\Vc\bin\link.exe" /out:"c:\udk2015\Build\NT32IA32\DEBUG_VS2013\IA32\SecMain.exe" /base:0x10000000 /pdb:"c:\udk2015\Build\NT32IA32\DEBUG_VS2013\IA32\SecMain.pdb" /LIBPATH:"C:\Program Files\Microsoft Visual Studio 12.0\VC\\Lib" /LIBPATH:"C:\Program Files\Windows Kits\8.1\Lib\winv6.3\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib /EXPORT:InitializeDriver=_ModuleEntryPoint /BASE:0x10000 /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE @c:\udk2015\Build\NT32IA32\DEBUG_VS2013\IA32\Nt32Pkg\Sec\SecMain\OUTPUT\static_library_files.lst

SecMain.lib(WinNtThunk.obj) : error LNK2001: unresolved external symbol _SetCons
oleCursorInfo@8
c:\udk2015\Build\NT32IA32\DEBUG_VS2013\IA32\SecMain.exe : fatal error LNK1120: 1
51 unresolved externals

build...
: error 7000: Failed to execute command
C:\Program Files\Microsoft Visual Studio 12.0\Vc\bin\nmake.exe /nologo t
build [c:\udk2\015\Build\NT32IA32\DEBUG_VS2013\IA32\Nt32Pkg\Sec\SecMain]

仔细研究发现是虚拟机无法找到一些 Windows SDK 的内容。后来经过研究发现错误的原因是因为我使用了错误 VS2013 的控制台。我想编译 X64的UEFI 代码,但是进入了 x86(IA32)的控制台。

tt

正确的做法是:

如果你要编译x64 的代码,那么需要进入上面红色框中的命令行模式。然后,Conf\Target.txt 中的TOOL_CHAIN_TAG 必须是VS2013;

如果你要编译IA32的代码,那么需要进入上面绿色框中的命令行模式。然后,Conf\Target.txt 中的TOOL_CHAIN_TAG 必须是VS2013x86;

否则编译器无法找到对应的SDK 文件。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注