2014-01-31 618 views
0

我已經將大型複雜Simulink模型的所有子系統編譯爲一系列dll。他們都在Visual Studio中工作,除了一個。不工作的是唯一一個需要simstruc.h頭文件的文件,當我嘗試編譯它時,會得到大約120條錯誤消息。它們大部分都在simstruc.h中,但也包含在後面,例如sfcn_bridge.h。他們都看同樣的方式:從Visual Studio運行Simulink模型時發生編譯器錯誤

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之前的程序,但突然它不工作。任何人都可以將我指向正確的方向嗎?

+0

頭文件simstruc_types.h是否存在於include文件夾中? – sajas

+0

是的,simstruc_types.h和simstruc.h位於相同的Matlab文件夾中,並且該文件夾在C/C++> General> Additional Include Directories中列出。這是正確的做法,對吧? –

回答

0

檢查是否有你的類聲明缺少「;」最後。

class AAA 
{ 
}; <--- this one 

編輯:

嘗試這些提示爲好。

  • 重建項目
  • 右鍵單擊每個CPP文件並點擊「編譯」,以確定感染的文件。
  • 檢查包含路徑。特別是simulink中的子文件夾include目錄。
  • 轉到SparseHeader結構聲明並檢查它是否被任何#ifdefs或任何預處理器定義忽略。
  • 如果您的代碼基數很小,請將其中的一半註釋掉,直到獲得可編譯的代碼。但這並不容易。
+0

感謝您的提示,但不幸的是我找不到任何缺少的分號。 –