【问题标题】:Compiler error when running Simulink models from Visual Studio从 Visual Studio 运行 Simulink 模型时出现编译器错误
【发布时间】:2014-01-31 08:13:44
【问题描述】:

我已将大型复杂 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 的程序,但突然无法正常工作。谁能指出我正确的方向?

【问题讨论】:

  • 头文件 simstruc_types.h 是否存在于包含文件夹中?
  • 是的,simstruc_types.h 和 simstruc.h 在同一个 Matlab 文件夹中,并且该文件夹在 C/C++>General>Additional Include Directories 中列出。这才是正确的做法,对吧?

标签: c++ header compilation simulink


【解决方案1】:

检查您的任何类声明是否缺少“;”最后。

class AAA
{
}; <--- this one

编辑:

也试试这些技巧。

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

【讨论】:

  • 感谢您的提示,但很遗憾我找不到任何丢失的分号。
  • @FabianJonsson 你能解决这个问题吗?我也面临同样的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-02
  • 2019-08-31
  • 2017-06-19
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
相关资源
最近更新 更多