【问题标题】:Compiling Matlab to C++ Problem: fatal error C1083: Cannot open include file: 'windows.h'将 Matlab 编译为 C++ 问题:致命错误 C1083:无法打开包含文件:'windows.h'
【发布时间】:2010-12-13 16:38:51
【问题描述】:

我在尝试使用以下命令将 matlab 编译为 C++ 时遇到了这个奇怪的错误:

'mcc -W lib:cshared -d ' clibdir ' -T link:lib ' mfile

我得到的错误是:

致命错误 C1083:无法打开包含 文件:'windows.h':没有这样的文件或 目录

现在,我使用 lcc 作为我的编译器(而不是 Visual Studio 编译器),我确保 Windows.h 位于 lcc\include 目录 (C:\Program Files\MATLAB\R2006a\sys\lcc\include) 中,但我仍然缺少windows.h 错误,即使我 确实 将它放在 include 文件夹中。

有人知道为什么会这样吗?

注意:我在 SO 阅读过类似的问题,发现这些问题与 include folders not set 等有关。但我确实设置了包含路径,我相信

【问题讨论】:

    标签: c++ matlab


    【解决方案1】:

    您引用的错误消息来自 Visual C++,因此您显然 使用 lcc,因此将文件放在 lcc 的目录中不会有任何区别。尝试运行 mbuild -setup 来配置 Matlab 以使用不同的编译器命令。

    如果您(或代表您的 Matlab)要运行 Visual C++ 命令行编译器,那么您应该在设置了所有正确环境变量(例如包含路径)的命令提示符下运行它。 Visual Studio 应该为此在您的开始菜单上放置一个项目,否则您可以在其他控制台窗口中运行vsvars32.bat 文件。

    【讨论】:

      【解决方案2】:

      我找到了一种解决方法 - 在“开始”菜单中,您会找到类似 Microsoft Visual Studio 2010 Express\Visual Studio Command Prompt (2010) 的内容

      这将启动命令提示符并设置所有环境变量,包括 LIB、INCLUDE 等。然后,从此命令提示符启动 MATLAB!例如:只需输入C:\Program Files\MATLAB\R2012a\bin\matlab.exe。因此,您可以从此 MATLAB 会话中调用 MEX。

      【讨论】:

      • 我不确定这是如何解决的;这听起来像是我在近三年前的回答中所建议的。 MEX 是否将 Matlab 代码编译为目标文件,以便与 mcc 等 C 程序链接?毕竟,这就是目标。我的印象是 mex 用于准备 C 代码,以便可以从 Matlab 程序中调用,在这种情况下,这是错误的方向。
      猜你喜欢
      • 2010-09-17
      • 1970-01-01
      • 2011-02-07
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多