2014-03-19 65 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文件夹中。