从Visual Studio运行Simulink模型时编译器错误

时间:2014-01-31 08:13:44

标签: c++ header compilation simulink

我已将一个庞大,复杂的Simulink模型的所有子系统编译成一系列dll。所有这些都在Visual Studio中工作,除了一个。那个不工作的是唯一一个需要simstruc.h头文件的人,当我尝试编译它时,我得到大约120条错误消息。其中大多数都在simstruc.h中,但也在后续的包含中,例如sfcn_bridge.h。所有这些看起来都是一样的:

error C2143: syntax error : missing ';' before '*' c:\matlabr2011b_x86\rtw\c\src\sfcn_bridge.h (37) 
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\matlabr2011b_x86\rtw\c\src\sfcn_bridge.h (37)

.

error C2143: syntax error : missing ';' before '*' c:\matlabr2011b_x86\simulink\include\simstruc.h (2135) 
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\matlabr2011b_x86\simulink\include\simstruc.h (2135)

上例中的代码如下所示:

sfcn_bridge.h(37):

SS_SimMode *simModePtr;

simstruc.h(2135):

SparseHeader* slvrJacobianMatrix;

之前我已经能够编译包含simstruc.h的程序,但突然间它无法正常工作。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

检查您的班级声明是否缺少“;”最后。

class AAA
{
}; <--- this one

修改

也请尝试这些提示。

  • 重建项目
  • 右键单击每个cpp文件,然后单击“编译”以识别受感染的文件。
  • 检查包含路径。特别是simulink中的子文件夹包括目录。
  • 转到SparseHeader结构的声明,检查是否被任何#ifdefs或任何预处理器定义跳过。
  • 如果你的代码库很小,请注释掉它的一半,直到你得到一个可编译的代码。但这并不容易。