【问题标题】:Visual Studio 2017 for Dymola cannot open stdio.hVisual Studio 2017 for Dymola 无法打开 stdio.h
【发布时间】:2019-04-30 13:33:39
【问题描述】:

我正在尝试将 Visual Studio 2017 用作 Dymola 2019 中的编译器。我已经在 VS2017 中为 C++ 安装了所有组件(据我所知)。但是当我尝试在 Dymola 中测试编译器时,我收到如下错误消息:

Compiling and linking the model (Visual C++). 

**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.11
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x86'
"Testing 32-bit compilation" 
dsmodel.c
dsmodel.c(1): fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory

Error generating Dymosim. 

我也尝试过使用 Visual Studio 2015,但也失败了。

Compiling and linking the model (Visual C++). 

ERROR: Cannot determine the location of the VS Common Tools folder.
"Testing 32-bit compilation" 
'cl' is not recognized as an internal or external command,
operable program or batch file.

Error generating Dymosim.

我也无法在任何地方的 VS2017 文件夹中找到 stdio.h。但它位于程序文件中的单独文件夹 WindowsSDK 中。

编译器测试应该可以工作(至少从我过去使用 dymola 和 VS 的经验来看,不确定这些工具的新版本是否搞砸了)

【问题讨论】:

    标签: c++ compiler-errors visual-studio-2017 dymola


    【解决方案1】:

    只是为了完成这个,因为我也有管理员权限但无法访问注册表的问题,因此 Dymola 抛出了编译器错误。有两种可能:

    1. 从 IT 获取注册表的访问权限。
    2. 如果这是不可能的,由于限制。 Eiter 安装一个绕过注册表或手动更改路径的工具,我建议这样做,因为这些工具不是那么严重。

    这是至少为 VS2013 更改路径的解决方案。首先,您需要在以管理员身份打开的文本编辑器中从%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\bin\ 打开vcvars32.bat。在那里,您需要注释掉前 3 行,它们执行设置多个路径的不可能的注册表调用。之后,您需要在vcvars32.bat 中手动设置这些路径。最后,vcvars32.bat 的开头应该是这样的:

        :: @call :GetVSCommonToolsDir
        :: @if "%VS120COMNTOOLS%"=="" goto error_no_VS120COMNTOOLSDIR
    
        :: @call "%VS120COMNTOOLS%VCVarsQueryRegistry.bat" 32bit No64bit
    
        @SET VSINSTALLDIR=%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\
        @SET VCINSTALLDIR=%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\
        @SET FrameworkDir32=c:\Windows\Microsoft.NET\Framework\
        @SET FrameworkVersion32=v4.0.30319
        @SET Framework40Version=v4.0
        @SET WindowsSdkDir=%ProgramFiles(x86)%\Windows Kits\8.1\
        @SET ExtensionSdkDir=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.1\ExtensionsSDKs\
        @SET WindowsSDK_ExecutablePath_x86=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\
        @SET WindowsSDK_ExecutablePath_x64=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64\
    

    也许,您需要为您的配置稍微调整一些路径。

    更多信息可以看这里:

    VS2010 command prompt gives error: Cannot determine the location of the VS Common Tools folder

    【讨论】:

      【解决方案2】:

      您如何确认您已为 C++ 编译安装了所有内容?

      对于 Visual Studio 的某些配置,您必须编译 C/C++ 文件才能触发下载实际编译器(只有 IDE 正常安装)。

      (取决于版本和管理员的配置。)

      【讨论】:

      • 我自己确实有管理员权限,所以我很容易对 VS 安装进行更改。我通过创建一个新项目触发了 C++ 安装。而且,我实际上浏览了整个列表,并安装了我能在 VS 中找到的所有与 C++ 编译相关的东西。
      • 只是要明确一点:创建项目后您还编译它吗?如果是这样,您似乎必须联系您的正常支持渠道。
      • 是的,编译在 VS 中工作正常。事实证明,即使我是管理员,我也无权访问 regedit。这就是问题所在。我通过 IT 服务启用了它,现在 dymola 可以正常工作了。
      【解决方案3】:

      好吧,事实证明,即使我拥有管理员权限,IT 部门实际上并没有让我能够访问注册表,即 regedit,它只是被禁用了。

      因此,启用它后,我可以确认 Dymola 现在可以在 VS 2017 和 2015 上正常工作。

      显然 dymola 需要访问 regedit 进行编译(不知道为什么)。

      【讨论】:

        【解决方案4】:

        不同的原因可能导致它。

        如果您在安装 Dymola 之前不小心删除了系统环境变量中的 PATH 值,您可能会遇到问题。在系统环境变量的PATH值中加入“%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0”后,编译器就可以重新工作了。

        【讨论】:

          猜你喜欢
          • 2017-10-28
          • 2021-12-17
          • 1970-01-01
          • 1970-01-01
          • 2019-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多