Visual Studio 2017 for Dymola 无法打开 stdio.h
Visual Studio 2017 for Dymola cannot open stdio.h
我正在尝试使用 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++ 编译安装了所有东西?
对于 Visual Studio 的一些配置,您必须编译一个 C/C++ 文件来触发实际编译器的下载(只有 IDE 是正常安装的)。
(取决于管理员的版本和配置。)
好吧,事实证明,即使我有管理员权限,IT 部门实际上并没有给我访问注册表的能力,即 regedit,它只是被禁用了。
因此,在启用它之后,我可以确认 Dymola 现在可以在 VS 2017 和 2015 中正常工作。
显然 dymola 需要访问 regedit 进行编译(不知道为什么)。
只是为了完成这个,因为我也有问题,我有管理员权限,但无法访问注册表,因此 Dymola 引发了编译器错误。有两种可能性:
- 从 IT 获取对注册表的访问权限。
- 如果由于限制而无法做到这一点。 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.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
不同的原因可能导致它。
如果在安装Dymola之前不小心删除了系统环境变量中的PATH值,可能会遇到问题。在系统环境变量的PATH值中加入“%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0”后,编译器又可以工作了。 =10=]
我正在尝试使用 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++ 编译安装了所有东西?
对于 Visual Studio 的一些配置,您必须编译一个 C/C++ 文件来触发实际编译器的下载(只有 IDE 是正常安装的)。
(取决于管理员的版本和配置。)
好吧,事实证明,即使我有管理员权限,IT 部门实际上并没有给我访问注册表的能力,即 regedit,它只是被禁用了。
因此,在启用它之后,我可以确认 Dymola 现在可以在 VS 2017 和 2015 中正常工作。
显然 dymola 需要访问 regedit 进行编译(不知道为什么)。
只是为了完成这个,因为我也有问题,我有管理员权限,但无法访问注册表,因此 Dymola 引发了编译器错误。有两种可能性:
- 从 IT 获取对注册表的访问权限。
- 如果由于限制而无法做到这一点。 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.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
不同的原因可能导致它。
如果在安装Dymola之前不小心删除了系统环境变量中的PATH值,可能会遇到问题。在系统环境变量的PATH值中加入“%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0”后,编译器又可以工作了。 =10=]