2014-03-19 62 views
2

嗨我試圖編譯一個C++文件即,用於連接Matlab到mysql數據庫的mysql.cpp。 我之前使用過相同的文件,並且能夠在沒有任何問題的情況下進行編譯,但昨天我不得不重新安裝Matlab,當我嘗試編譯該文件時,雖然我沒有對cpp文件進行任何更改,但出現很多語法錯誤。 作爲參考,該文件是從這裏取: -mysql.cpp在MATLAB編譯錯誤

http://www.mathworks.com/matlabcentral/fileexchange/8663-mysql-database-connector

我收到以下錯誤: -

Error mysql.cpp: 57 illegal initialization for parameter 'n' 
Error mysql.cpp: 98 syntax error; found 't' expecting ')' 
Error mysql.cpp: 98 skipping 't' 
Error mysql.cpp: 100 undeclared identifier 't' 
Warning mysql.cpp: 100 possible usage of t before definition 
Error mysql.cpp: 177 syntax error; found 'int' expecting ';' 
Error mysql.cpp: 177 syntax error; found 'int' expecting ';' 
Error mysql.cpp: 177 syntax error; found 'int' expecting ')' 
Error mysql.cpp: 177 skipping 'int' 
Error mysql.cpp: 177 undeclared identifier 'j' 
Warning mysql.cpp: 177 Statement has no effect 
Warning mysql.cpp: 177 unreachable code 
Error mysql.cpp: 177 syntax error; found ')' expecting ';' 
Error mysql.cpp: 177 illegal statement termination 
Error mysql.cpp: 177 skipping ')' 
Error mysql.cpp: 183 syntax error; found 'int' expecting ';' 
Error mysql.cpp: 183 syntax error; found 'int' expecting ';' 
Error mysql.cpp: 183 syntax error; found 'int' expecting ')' 
Error mysql.cpp: 183 skipping 'int' 
Error mysql.cpp: 183 undeclared identifier 'j' 
Warning mysql.cpp: 183 Statement has no effect 
Warning mysql.cpp: 183 unreachable code 
Error mysql.cpp: 183 syntax error; found ')' expecting ';' 
Error mysql.cpp: 183 illegal statement termination 
Error mysql.cpp: 183 skipping ')' 
Error mysql.cpp: 186 too many errors 

我沒有使用

mex -setup 

爲MEX設置和使用以下命令進行編譯: -

mex -DWIN32 -I'D:\Softwares\MY SQL\mysql-5.6.12-win32\mysql-5.6.12-win32\include' 
-L'D:\Softwares\MY SQL\mysql-5.6.12-win32\mysql-5.6.12-win32\lib' -llibmysql mysql.cpp  

任何幫助非常感謝!

+0

嘗試'MEX -setup C++'?它確實看起來像被調用的編譯器是一個嚴格的'C'編譯器 - 例如,'C'不允許默認參數。你有'mex'命令的** full **輸出,它包含了執行構建時'mex'傳遞給Windows的命令行嗎? –

+0

這是我得到的錯誤信息的最後一行: - D:\ MATLAB〜2 \ BIN \ MEX.PL:錯誤:編譯'mysql.cpp'失敗。我認爲你(@Dan Nissenbaum)說它試圖用C編譯器進行編譯。編譯MEX -setup在列表只LCC-將Win32 C 2.4.1在d:\ MATLAB〜2 \ SYS \ LCC –

+0

我想我還需要安裝C++編譯器的'MEX -setup C++''說d:\ MATLAB〜2 \ BIN \ MEX.PL:錯誤:「C++」不found.' –

回答

0

您可以通過查克·桑德斯遵循這樣的:

這裏就是我得到了這基於Matlab R2015a安裝工作在64位的Windows 7安裝。我開始沒有編譯器,沒有安裝SQL:

  • 搜索「MySQL Community Installer」,下載它,然後讓它安裝「完整」選項。

  • 檢查添加/刪除程序以查看是否安裝了Microsoft Visual C++ 2010 Redistributable軟件包,同時(x86)和(x64)軟件包將導致Windows SDK 7.1安裝失敗。

  • 如果您有它們,請搜索「Microsoft Fix It」實用程序。運行它,選擇「卸載」,然後使用它卸載所有VC++ 2010可再發行組件。

  • 下載並安裝Windows SDK。如果安裝失敗,並且您不打算運行Fix It實用程序,我告訴過您!

  • 安裝Windows SDK後,您必須對其進行配置。轉到開始 - >所有程序 - > Microsoft Windows SDK XY-> Visual Studio註冊 - > Windows SDK配置工具

  • 如果配置工具大聲說您沒有安裝Visual Studio 2005或2008 ... go安裝它。我安裝了VS 2008.

  • 一旦完成了這一切,在Matlab提示符下鍵入行「mex -setup」,並驗證Windows SDK顯示爲選項並被選中(如果您有其他編譯器 - 我只得到了這對我來說與SDK工作,所以我不能發表評論回覆:別的)

  • 現在,確保「mysql.m」和「mysql.cpp」是在一個文件夾中Matlab路徑,完全按照'mysql.m'註釋中顯示的那樣運行編譯命令。對於我來說,我的include和庫文件的路徑是:「C:\ Program Files \ MySQL \ MySQL Server 5.6 \」,然後根據命令適當選擇「bin \」或「lib \」。

  • 供您參考,這對我來說完全是命令:MEX -I 「C:\ Program Files文件\的MySQL \ MySQL服務器5.6 \包括」 -DWIN32 mysql.cpp「C:\ Program Files文件\的MySQL \ MySQL服務器5.6 \ lib中\的libmysql。LIB」

  • 同樣,這依賴於使用任何你已經安裝的MySQL版本,所以如果你不具備的MySQL 5.6安裝,那麼你需要修改此命令,使其指向正確的位置。

  • 在這一點上,該文件應正確編譯,但你可能會得到這樣幾個人以下已經得到了一個錯誤:「無效的MEX文件: 指定的模塊找不到」這個錯誤是因爲你沒有複製「的libmysql從取其文件夾具有mysql.mex文件的\ LIB \文件夾中的.dll」文件。一旦你做到這一點,它應該工作!

  • 菲娜lly,供你參考,爲了明確,我在我的根Matlab文件夾中有'mysql.cpp','mysql.m','mysql.mexw64',然後我從'C:\'複製'libmysql.dll'。 Program Files \ MySQL \ MySQL Server 5.6 \ lib \「添加到我的Matlab Matlab文件夾中。