编译Matlab到C++的问题:致命错误 C1083:无法打开包含文件:'windows.h'

9 浏览
0 Comments

编译Matlab到C++的问题:致命错误 C1083:无法打开包含文件:'windows.h'

我尝试使用以下命令将Matlab编译为C++时遇到了一个奇怪的错误:\n

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

\n我遇到的错误是:\n

\n致命错误 C1083: 找不到包括文件: \'windows.h\': 没有那个文件或目录\n

\n现在,我正在使用lcc作为编译器(而不是Visual Studio),我确保Windows.h位于lcc\\include目录下(C:\\Program Files\\MATLAB\\R2006a\\sys\\lcc\\include),然而,即使我将其放在include文件夹中,我仍然收到了缺少windows.h的错误。有人知道为什么会这样吗?\n注意:我在SO上阅读了类似的问题,并发现这些问题与未设置包含文件夹等有关。但我确实设置了包含路径,我相信。

0
0 Comments

问题的原因是在编译Matlab代码为C++时,出现了一个fatal error C1083: Cannot open include file: 'windows.h'的错误。windows.h是Windows操作系统的头文件,用于定义Windows API的函数、常量和数据结构。

解决这个问题的方法是在启动命令提示符时设置所有的环境变量,包括LIB、INCLUDE等。然后从这个命令提示符中启动MATLAB,这样就可以在MATLAB会话中调用MEX。

具体的步骤如下:

1. 在开始菜单中找到类似于"Microsoft Visual Studio 2010 Express\Visual Studio Command Prompt (2010)"的选项。

2. 这将启动一个命令提示符,其中包含所有的环境变量设置。

3. 从这个命令提示符中启动MATLAB。例如,输入"C:\Program Files\MATLAB\R2012a\bin\matlab.exe"。

4. 在MATLAB会话中,可以调用MEX命令来编译Matlab代码为C++。

需要注意的是,MEX命令用于准备C代码,以便从Matlab程序中调用。而在这个问题中,目标是将Matlab代码编译为用于与C程序链接的目标文件,类似于mcc的功能。因此,使用MEX可能是一个错误的方向。

在编译Matlab代码为C++时,出现fatal error C1083: Cannot open include file: 'windows.h'的错误。解决方法是在启动命令提示符时设置所有的环境变量,然后从这个命令提示符中启动MATLAB,并在MATLAB会话中调用MEX命令。需要注意MEX命令是用于准备C代码,以便从Matlab程序中调用,可能不适用于将Matlab代码编译为目标文件的情况。

0
0 Comments

问题出现的原因是使用了Visual C++,而不是lcc,因此无论将文件放在lcc的目录中是否有任何区别。解决方法是运行mbuild -setup来配置Matlab使用不同的编译器命令。

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

0