首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用Matlab编译工具使用C++编译器

如何利用Matlab编译工具使用C++编译器
EN

Stack Overflow用户
提问于 2014-04-15 10:54:39
回答 2查看 1.7K关注 0票数 1

我试图在Matlab中构建一个包含m文件和c++源文件的源代码包。

源文件夹有一个简单的Matlab脚本来编译一个文件夹中的所有cpp文件:

代码语言:javascript
复制
function compileDir_simple(Cdir)
if nargin<1
    Cdir=pwd;
end

files = dir(fullfile(Cdir,'*.cpp'));

oldDir=pwd;
cd(Cdir);
for j=1:length(files)
    try
        cm = sprintf('mex -largeArrayDims %s',files(j).name);
        disp(cm);
        eval(cm);
catch
    disp(lasterr);
    disp('IGNORE if the file is a C++ file which is not a mex file (ie without a     mexFunction inside)');
    end
end

cd(oldDir);

在内部,它使用"mex -largeArrayDims“。然而,我的问题是,当我评估该语句时,Matlab试图通过包含在MATLAB本身中的C编译器构建选定的文件。当我调用mex -setup时,我看到:

请选择用于构建外部接口( -setup )文件的编译器:

代码语言:javascript
复制
Would you like mex to locate installed compilers [y]/n? y

Select a compiler: 
[1] Lcc-win32 C 2.4.1 in D:\MATLAB\R2010a\sys\lcc 

[0] None 

Compiler: 

我安装了C++编译器,并添加了它的bin文件夹(到变量中),但在已安装编译器列表中仍然看不到我的C++编译器。只有Lcc 32出现。可以说,这是我第一次编译mex文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-15 11:41:19

Windows上的mex文件只是一个DLL,它导出一个名为mexFunction的函数。原则上,您可以使用任何可以创建Windows DLL的编译器来编译mex文件。

然而,要做到这一点,在MATLAB中使用mex函数需要MATLAB了解您的编译器。默认情况下,MATLAB只了解有限数量的编译器。您选择的编译器不是其中之一。

流血是以交融为基础的。这意味着您应该能够使用古梅克斯项目来创建用于编译器的mexopts.bat文件。

然而,我对在这里使用流血事件持怀疑态度。这是一个C++ IDE,我不确定你是否特别需要它。我怀疑你所寻找的只是一个编译器。在这种情况下,最好通过安装普通的混合方式来服务您。

票数 2
EN

Stack Overflow用户

发布于 2014-04-15 10:57:35

血腥的C++不是一个受支持的编译器。检查http://www.mathworks.co.uk/support/compilers/R2014a/index.html以获得受支持的编译器列表。从同一页面可以获得旧版本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23081597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档