Microsoft Visual C ++ 2008和R2007b的Mex类型

时间:2016-07-26 07:17:17

标签: c++ matlab mex

我想在vs2008和matlab2007b.i上使用mex类型尝试下面的代码。

#include<iostream>
#include <matrix.h>
#include<mex.h>
using namespace std;
void hello(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
  mexPrintf("Hello World!\n");
}

并收到此错误

'matrix.h': No such file or directory

我在下面的matlab commond win中写道

mex -setup
Please choose your compiler for building external interface (MEX) files: 

Would you like mex to locate installed compilers [y]/n? y

Select a compiler: 
[1] Lcc-win32 C 2.4.1 in C:\PROGRA~1\MATLAB\R2007b\sys\lcc 

[0] None 

Compiler: 

那么使用mex类型该怎么办?

谢谢

1 个答案:

答案 0 :(得分:0)

我看到两个问题:

  1. 您无需加载<matrix.h><matrix.h>中包含<mex.h>。尝试:include "mex.h"代替<mex.h>,然后移除include <matrix.h>
  2. mex -setup找不到您的Microsoft Visual C ++ 2008编译器。
  3. 选择菜单应如下所示:

    Please choose your compiler for building external interface (MEX) files:

    Would you like mex to locate installed compilers [y]/n? y

    Select a compiler:
    [1] Lcc-win32 C 2.4.1 in C:\PROGRA~1\MATLAB\R2007b\sys\lcc
    [2] Microsoft Visual C++ 2008
    [0] None

    由于Visual 2008比Matlab R2007b更新,因此Matlab无法自动定位Visual 2008.

    有一种方法可以手动添加它 请参阅此处:https://www.mathworks.com/matlabcentral/newsreader/view_thread/297616

    请考虑:我无法完全验证以下说明,因为我没有Matlab R2007b:

    分步说明:

    1. 转到https://www.mathworks.com/matlabcentral/fileexchange/18508-microsoft-visual-studio-2008-mex-and-mbuild-setup-files
    2. 下载zip文件VS2008Matlab.zip(按页面右上角的“下载zip”蓝色按钮)。
    3. 解压缩zip文件。
    4. 将文件夹内容VS2008MATLABMexCompilerFilesX64复制到:C:\Program Files\MATALB\R2007b\bin\win64\mexopts(假设您的版本在默认安装文件夹中为64位)。
    5. 将文件夹内容VS2008MATLABMBuildCompilerFilesX64复制到:C:\Program Files\MATALB\R2007b\bin\win64\msbuildopts
    6. 执行mex -setup,并验证Visual Studio 2008是否在列表中。