【问题标题】:C header files missing in Visual studio Command prompt to compile Sqlite3.cVisual Studio 命令提示符中缺少用于编译 Sqlite3.c 的 C 头文件
【发布时间】:2021-04-27 04:40:13
【问题描述】:

当我尝试从 Visual Studio 2017 开发人员命令提示符 (MSVC) 编译 sqlite3.c 文件时,我收到了缺少 C 头文件的错误。我已经在 Visual Studio 安装程序中选择了 C & CPP 开发所需的所有选项/工作负载。不知道我缺少什么参考。 这是我的示例输入

cl shell.c sqlite3.c -Fesqlite3.exe

这是回复:

Microsoft (R) C/C++ 优化编译器版本 19.16.27042 for x86 版权所有 (C) 微软公司。保留所有权利。

shell.c shell.c(85):致命错误 C1083:无法打开包含文件: 'stdlib.h': 没有这样的文件或目录 sqlite3.c C:\Program Files (x86)\微软视觉 Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include\xmmintrin.h(79): 致命错误 C1083:无法打开包含文件:'malloc.h':没有这样的文件 或目录

【问题讨论】:

  • 我觉得默认SDK有问题

标签: c++ c visual-studio sqlite


【解决方案1】:

根据Microsoft Docs,错误C1083主要由以下原因引起。

文件未包含在包含搜索路径中

编译器无法使用以下搜索规则找到文件 由#include 或#import 指令指示。例如,当一个 头文件名用引号括起来,

#include "myincludefile.h"

这告诉编译器在同一目录中查找文件 首先包含源文件,然后在其他位置查找 由构建环境指定。如果引号包含一个 绝对路径,编译器仅在该位置查找文件。 如果引号包含相对路径,编译器会查找 相对于源目录的目录中的文件。

如果名称用尖括号括起来,

#include

编译器遵循构建定义的搜索路径 环境、/I 编译器选项、/X 编译器选项和 包括环境变量。欲了解更多信息,包括具体 有关用于查找文件的搜索顺序的详细信息,请参阅#include 指令 (C/C++) 和#import 指令。

如果您的包含文件位于与您的源相关的另一个目录中 目录,并且您在包含指令中使用相对路径,您 必须使用双引号而不是尖括号。例如,如果您的 头文件 myheader.h 位于项目源的子目录中 命名标题,则此示例无法找到文件并导致 C1083:

#include

在我看来,原因是:stdio.h这些头文件不在VS2017的默认路径下,导致VS2017找不到这些头文件。

我建议您可以在Properties中添加以下路径。

VC++ Doerctories->包含目录:C:\Program Files (x86)\Windows 套件\10\Lib\10.0.17134.0\ucrt

VC++ Doerctories->库目录:C:\Program Files (x86)\Windows 套件\10\Lib\10.0.17134.0\ucrt\x86

如果仍然无法正常工作,则可能是 Windows SDK 存在问题。我建议你可以重新安装 Windows SDK。

【讨论】:

  • 当我在 MSVC 命令提示符下编译这些东西时,您能简要介绍一下如何包含这些路径吗?
  • 你只需要将文件路径添加到环境变量中即可。
  • 我需要用新的变量名添加它们还是需要链接到现有的变量?
  • 不需要使用新的变量名。
  • 你能说的更具体一点吗?我对这个概念很陌生。
猜你喜欢
  • 2014-01-18
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多