这四个文件与可以用的四个文件相差不大,但是就因为这一点点区别结果却很不一样啊。运行出来提示缺少各种.h文件,比如windows.h等等,错误提示如下:
D:\PROGRA~1\MATLAB\R2012b\extern\include\mclmcrrt.h(59) : fatal error C1083: 无法打开包括文件:“windows.h”: No such file or directory
D:\PROGRA~1\MATLAB\R2012B\BIN\MEX.PL: Error: Compile of '123.cpp' failed.
Error: An error occurred while shelling out to mbuild (error code = 9).
Unable to build executable (specify the -v option for more information).
Error using mcc
Error executing mcc, return status = 1 (0x1).
于是乎,我就在C盘中找到windows.h文件,将其复制到matlab安装目录的include文件夹下(曾试过将包含windows.h文件的文件夹添加到matlab路径中,不管用,故出此下策),又提示缺少其他.h文件,于是把windows.h所在文件夹里的文件都复制到matlab安装目录的include文件夹下,终于不再提示缺少.h文件,却提示缺少新的东西,于是乎放弃了。
失败!!!!!
第二次尝试:
经过第一次尝试,我在想是不是我matlab安装的路径有问题呢?我的VS2012安装时用的是默认路径,可是matlab我却安装到D盘中。于是我又重装了一下matlab,结果一样,所以由此看出并不是matlab安装路径的问题,也就是说matlab安装时并不需要默认路径。
所以只要你的VS也就是VC++安装路径是按照默认的安装就行,matlab不强求!
失败!!!!!
第三次尝试:
将前期准备中的四个文件替换为正确的文件,本以为这次总可以了吧?可是新的错误来了:
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\sal_supp.h(57) : warning C4005: “__useHeader”: 宏重定义
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\specstrings_supp.h(77) : warning C4005: “__on_failure”: 宏重定义
c:\users\csc\desktop\matlab-ex\matlab+vs\123.h(60) : error C2059: 语法错误:“数字上的错误后缀”
c:\users\csc\desktop\matlab-ex\matlab+vs\123.h(60) : error C2059: 语法错误:“常量”
c:\users\csc\desktop\matlab-ex\matlab+vs\123.h(65) : error C2059: 语法错误:“数字上的错误后缀”
c:\users\csc\desktop\matlab-ex\matlab+vs\123.h(65) : error C2059: 语法错误:“常量”
c:\users\csc\desktop\matlab-ex\matlab+vs\123.h(68) : error C2059: 语法错误:“数字上的错误后缀”
c:\users\csc\desktop\matlab-ex\matlab+vs\123.h(68) : error C2059: 语法错误:“常量”
c:\users\csc\desktop\matlab-ex\matlab+vs\123.h(73) : error C2059: 语法错误:“数字上的错误后缀”
c:\users\csc\desktop\matlab-ex\matlab+vs\123.h(73) : error C2059: 语法错误:“常量”
123.cpp(75) : error C2059: 语法错误:“数字上的错误后缀”
123.cpp(75) : error C2059: 语法错误:“常量”
123.cpp(78) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
123.cpp(78) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
123.cpp(105) : error C2059: 语法错误:“数字上的错误后缀”
123.cpp(105) : error C2059: 语法错误:“常量”
123.cpp(106) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
123.cpp(106) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
123.cpp(107) : error C2059: 语法错误:“数字上的错误后缀”
123.cpp(111) : error C2059: 语法错误:“数字上的错误后缀”
123.cpp(111) : error C2059: 语法错误:“常量”
123.cpp(112) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
123.cpp(112) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
123.cpp(118) : error C2059: 语法错误:“数字上的错误后缀”
123.cpp(118) : error C2059: 语法错误:“常量”
123.cpp(119) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
123.cpp(119) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
Error: An error occurred while shelling out to mbuild (error code = 9).
Unable to build executable (specify the -v option for more information).
Error using mcc
Error executing mcc, return status = 1 (0x1).
其中123是我给保存文件命的名。虽然也是错误很多,但是至少比之前进步了,是语法错误,也不算缺少什么文件啊,什么的。
失败!!!但是有进步~~~~
第四次尝试:
这次尝试改的东西也不多,一开始也出现错误,后来莫名其妙就好了。
做了以下改变:第一,这次尝试中我设置了系统变量;
做完以上工作之后输入命令:mcc -W cpplib:123 -T link:lib MyAdd.m,依然提示第三次尝试中的错误。
我以为再也不会好了,奇迹出现了,无意间在网页上看到一条指令: mcc -t -W cpplib:MyAdd -T link:lib -h libmmfile.mlib MyAdd.m,抱着死马当活马医的态度尝试了一下,成功了。
为了知道这条指令中哪个起到了关键作用,我就尝试着慢慢删除其中的某些部分做了以下的尝试:
mcc -t -W cpplib:MyAdd -T link:lib MyAdd.m
mcc -W cpplib:MyAdd -T link:lib MyAdd.m
看到最下面的那条指令了没?对,就是一开始一直出错的指令,居然奇迹般得毫无错误的可以运行了!!!
成功!!!!!!!!!!!虽然有一点点靠运气~~~~~