在mex下编译vtk示例时找不到GLIBCXX

Bil*_*ham 4 c++ glibc mex vtk

我一直在尝试按照这个例子在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)

许多人在互联网上抱怨这一点,如果这两个解决方案不起作用,会有不同的解决方案.