Articles of mex

Linux(GLNXA64)使用mxCreateUninitNumericMatrix R2013b

在一个MEX文件中,我用命令创build了一个输出matrix(工作正常): plhs[0] = mxCreateNumericMatrix((mwSize)destLen, 1, mxUINT8_CLASS, mxREAL); 为了加速,我想使用未初始化的dynamic内存,这导致我没有logging的命令: plhs[0] = mxCreateUninitNumericMatrix((mwSize)destLen, 1, mxUINT8_CLASS, mxREAL); 在Win32和Win64中工作也很好。 在我的Linux环境中使用完全相同的代码会导致编译器的以下警告: warning: assignment makes pointer from integer without a cast [enabled by default] 代码崩溃,显示返回的整数值不是指向正确内存地址的那个值。 我能做些什么来使用mxCreateUninitNumericMatrix ?

在Matlab mex文件中编译c ++ 11代码时出错

我已经下载了下面的代码 : CVPR 2014十字路口联合优化代码 cvpr2014-iou-code-1.0.zip http://research.microsoft.com/en-us/downloads/e164fe21-ef2b-4e34-98c1-4868968abb06/ 我得到的是两个文件夹,一个叫src/ ,另一个叫matlab/ 。 我正在运行Linux Fedora 19,我可以在src/编译代码src/很好。 当我尝试在matlab/编译代码时出现问题。 自述文件说: Matlab compilation —————— From within Matlab, configure the compiler using "mex -setup", then adjust the paths in matlab\compile_windows.m or matlab/compile_linux.m scripts and run either "compile_linux.m" or "compile_windows.m" in the "matlab" directory. 对于Linux更具体: Linux ===== From within Matlab run "mex -setup", then […]

未find版本GLIBCXX_3.4.11(buildW.mexglx需要)

我正在尝试通过matlab 在这里编译一个c ++ ubuntu项目。 当我试图用make命令编译后使用它时,出现以下错误: Invalid MEX-file '////fashionista_v0.2/lib/+bsr/buildW.mexglx': //local/MATLAB/R2011a/bin/glnx86/../../sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ////fashionista_v0.2/lib/+bsr/buildW.mexglx) 我对这些stream程并不熟悉,所以我不能理解这样的几个提议的解决scheme。 什么是libstdc ++和GLIBCXX,我该如何解决这个问题? 我正在尝试使用从nkjtbuild议的链接来解决问题: export LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH 但是,由于缺乏unix的shell知识,我不明白要在命令中放什么。 我有定位libstdc ++ .a和.so文件在gcc文件夹/usr/lib/gcc/i686-linux-gnu/4.6 ,我正在尝试以下操作: export LD_LIBRARY_PATH=/usr/lib/gcc/i686-linux-gnu/4.6:$LD_LIBRARY_PATH 但是,我的matlab错误仍然存​​在。 我正在使用Ubuntu 12.04版本的gcc 4.6和matlab r2011a。 编辑:我已经更新了matlab版本到r2012a的问题仍然是一样的。 我也尝试了以下内容: sudo ln -s /usr/lib/cc/i686-linux-gnu/4.6/libstdc++.so libstdc++.so.6 我无法创build文件已经存在的文件。 usr / lib / libstdc ++。so.6 |的输出 grep GLIBC: GLIBCXX_3.4 GLIBCXX_3.4.1 … GLIBCXX_3.4.10 […]

是否有可能使用Eclipsedebuggingmex代码?

我正在尝试写一些mex代码,但是用gbd在控制台上debugging是很痛苦的。 有没有可能使用Eclipse或Matlab的GUI? 如果这些不是可行的方法,那么编写mex代码的最佳方法是提供良好的debuggingfunction?

/usr/../libstdc++.so.6:未find版本'GLIBCXX_3.4.11'(必需)

我一直被困在这个问题上好几个星期,一直在互联网上寻找解决scheme,但目前为止不太好… 所以我有一个由别人编写的程序,我尝试在Matlab中编译,使其工作。 我的电脑是红帽企业Linux工作站(64位),安装了gcc 4.4.3和Matlab 2011b。 gcc与我的Matlab兼容( http://www.mathworks.com/support/compilers/R2011b/glnxa64.html )。 编译工作正常(我的意思是,没有错误信息发生在Matlab命令窗口)。 但编译之后,每当我使用编译的特定函数(称为“mexLasso”)时,都会显示如下错误: ***无效的MEX文件“/usr/local/matlab_R2011b/toolbox/spams-matlab/build/mexLasso.mexa64”:/usr/local/matlab_R2011b/bin/glnxa64/../../sys/os/glnxa64 /libstdc++.so.6:版本'GLIBCXX_3.4.11'找不到(需要/usr/local/matlab_R2011b/toolbox/spams-matlab/build/mexLasso.mexa64) testing错误(第24行)alpha = mexLasso(X,D,param); * 所以我在terminalinput“strings /usr/lib/libstdc++.so.6 | grep GLIBC”,我发现其中实际上是“GLIBCXX_3.4.11”。 我一直在使用Linux和gcc的东西只有几个月…所以还是有很多东西我不明白。 如果你能详细解释,这将是非常有帮助的。 谢谢!! %%更多详细信息:我从http://spams-devel.gforge.inria.fr/downloads.html获得了有关机器学习的这些程序。 奇怪的是,编译后,该包中的其他function工作正常(如“mexTrainDL”)。

如何告诉mex与libstdc ++。so.6在/ usr / lib而不是在MATLAB目录中的链接?

现在mex在MATLAB 2012a只正式支持gcc 4.4.6,但我想使用gcc 4.7在我自己的风险。 现在,如果我直接用mex编译一些东西,它会抱怨 /usr/lib/gcc/i686-linux-gnu/4.7/cc1plus: /usr/local/MATLAB/R2012a/sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib/i386-linux-gnu/libppl_c.so.4) /usr/lib/gcc/i686-linux-gnu/4.7/cc1plus: /usr/local/MATLAB/R2012a/sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib/i386-linux-gnu/libppl.so.9) 通过strings /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep 'GLIBCXX' strings /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep 'GLIBCXX'我确认这个libstdc++.so.6有版本string。 我复习了mexopts.sh并修改了该脚本中的variables$RPATH和$MLIBS ,但是它不起作用。 所以,如果我不使用符号链接,我可以在哪里configurationlibstdc++.so.6的pathlibstdc++.so.6 谢谢。