在设置 matlab 以访问外部 c++ 编译器时需要帮助

Posted

技术标签:

【中文标题】在设置 matlab 以访问外部 c++ 编译器时需要帮助【英文标题】:Need help on setting up matlab to access external c++ compiler 【发布时间】:2012-10-12 11:28:01 【问题描述】:

我目前正在关注 SIFTGPU matlab 教程,并且卡在这个非常早期的部分:

SIFTGPU 用 C++ 编码,必须保存为 .mex(matlab 外部) 文件之前,它可以从 Matlab 调用。为了创建 .mex 文件,您必须确保 Matlab 设置为访问外部 通过输入C++编译器

mex –设置

进入 Matlab 命令窗口并按照屏幕上的 说明。

因为我没有 Visual C++ express 2010 和 Windows SDK,所以我按照http://www.mathworks.com/support/compilers/R2011a/win64.html 的说明进行操作

这两个软件的安装都很好,但是对于 matlab:

>> mex -setup

Welcome to mex -setup.  This utility will help you set up  
a default compiler.  For a list of supported compilers, see  
http://www.mathworks.com/support/compilers/R2011a/win64.html 

Please choose your compiler for building MEX-files: 

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

Select a compiler: 
[1] Microsoft Visual C++ 2010 Express in D:\VS2010 

[0] None 

Compiler: 1

Please verify your choices: 

Compiler: Microsoft Visual C++ 2010 Express  
Location: D:\VS2010 

Are these correct [y]/n? y

***************************************************************************** 
  Error: Microsoft Visual C++ 2010 Express requires the Microsoft Windows 
         Software Development Kit (SDK), but the SDK cannot be found.  
         For more information about the required SDK, see:  
         http://www.mathworks.com/support/compilers/R2011a/win64.html 
***************************************************************************** 

??? Error using ==> mex at 208
Unable to complete successfully.

我不确定下一步该去哪里。有人可以告诉我在安装 VC++ Express 2010 和 Windows SDK 之后我需要做什么吗?

【问题讨论】:

【参考方案1】:

不要安装 Visual Studio Express。安装 Windows SDK - 它带有一个编译器,并且该设置适用于 MATLAB。 Visual Studio 也不适用于我,因为您需要运行批处理文件来设置环境。

编辑这是安装 SDK 后的 mex 配置屏幕:

mex 设置

欢迎使用 mex -setup。此实用程序将帮助您设置 默认编译器。如需支持的编译器列表,请参阅http://www.mathworks.com/support/compilers/R2012a/win64.html

请选择您的编译器来构建 MEX 文件:

您希望 mex 找到已安装的编译器 [y]/n 吗?是的

选择编译器:

[1] C:\Program Files (x86)\Microsoft Visual Studio 10.0 中的 Microsoft 软件开发工具包 (SDK) 7.1

[0] 无

编译器:

【讨论】:

@Karl 和你一样,输入mex -setup 并选择windows 编译器。只是不要安装 VC++ Express。只安装 SDK - 那里有一个编译器。 不,根本没有列出编译器。 @Karl 这很奇怪。我已经更新了我的答案,向您展示了我得到的配置选项。我不是 Windows 专家,但也许你将它安装在某个奇怪的地方?或者,也许您选择了不同的安装选项?你在哪里安装的?你在开始菜单中看到了吗? ...等等。你有 C:\Program Files (x86)\Microsoft Visual Studio 10.0?我以为你说“不要安装 Visual Studio”。为什么会在那里? @Karl 这是 SDK 的一部分。我说你不应该安装 Visual Studio Express,只安装 SDK with 编译器。

以上是关于在设置 matlab 以访问外部 c++ 编译器时需要帮助的主要内容,如果未能解决你的问题,请参考以下文章

尝试编译 MEX 文件时缺少 libkernel32

如何在 gedit 中使用外部工具交互式运行 C++ 程序

网络位置上的 Visual C++ 运行时

仅在调试期间在 C++ 中初始化 matlab-compiler dll / lib 时访问冲突

如何让 MatLab 找到 Visual C++ 编译器?

具有外部 C++ 函数的 Matlab:coder.ceval 将结构传递给函数