我一直在尝试按照这个例子在Ubuntu 11.10上使用mex在MATLAB中编译vtk.我使用的mex命令如下:
mex -I/usr/include/vtk-5.6 vtk_file.cpp -L/usr/lib/ -lvtkFiltering -lvtkRendering -lvtkCommon
Run Code Online (Sandbox Code Playgroud)
编译后我有一个.mexa64
文件.
但是,当我尝试运行该文件时,我最终得到以下错误:
Invalid MEX-file '/home/bill/Documents/MATLAB/vtk/vtk_file.mexa64':
/usr/local/MATLAB/R2011b/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6:
version `GLIBCXX_3.4.11' not found (required by /usr/lib/libvtkFiltering.so.5.6)
Run Code Online (Sandbox Code Playgroud)
我怎样才能确保找到glibcxx?我原以为它会默认包含在编译中.
Oli*_*Oli 12
Matlab使用自己的glibc图书馆,因此它通常是一个很大的混乱.
要解决该问题,您应首先尝试确保matlab使用受支持的gcc版本.编译时是否收到警告?
如果你是sudoer,你也可以"强迫"matlab使用标准glibc,做类似的事情(我做了,它工作正常):
cd /usr/local/MATLAB/R2011a/sys/os/glnxa64
sudo mkdir old
sudo mv libstdc++.so.6* old
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6
Run Code Online (Sandbox Code Playgroud)
许多人在互联网上抱怨这一点,如果这两个解决方案不起作用,会有不同的解决方案.