问题描述
目前我正在尝试在我的 EDK2 项目中使用 C 标准库。 由于我的 Visual Studio 2019 没有自动添加必要的包含目录, 我手动将以下文件夹添加到我的包含目录中:
C:\edk2\MdePkg\Include\X64
C:\edk2\MdePkg\Include
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.28.29812\include
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.28.29812\atlmfc\include
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Auxiliary\VS\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\cppwinrt
C:\Program Files (x86)\Windows Kits\NETFxsdk\4.8\Include\um
由于这修复了我丢失的 #include 指令,我唯一剩下的就是手动 将缺少的库添加到链接器参数中。
我是这样做的:
1.) 在 Google 快速搜索后,我发现我必须将我的应用程序链接到 libucrt.lib,然后我尝试通过执行一个简单的操作来定位我的 Windows 10 SDK 内部搜索,结果如下:
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x64
因此,我将此目录添加到 Visual Studio 2019 中的库目录中。 不要忘记,我还添加了 libucrt.lib:
我已经尝试过使用不同的包含目录以及不同的 Windows SDK 版本, 但似乎没有一个能解决我的问题。
我很感激任何形式的帮助,谢谢。
解决方法
我决定自己从 stdlib 中实现我需要的功能,正如@user123 所建议的,为了解决这个问题并节省我很多时间。