在进行这个实验中,通过c++调用matlab中自己编写的函数(是通过将该函数在matlab中mcc编译成.so,然后c++中调用这个.so的方式),成功编译后(编译时也出现一些错误,详情点这里),但是成功编译完后,居然不能运行。为什么编译通过不报任何错误,但是运行不了呢?原来是因为matlab的动态链接库运行时需要安装MCRInstaller(它包含matlab所有的动态链接库文件),所以本文需要安装一下MCRInstaller。我的matlab版本为2012a。安装步骤:
1)在matlab命令行窗口输入mcrinstaller,可以看到很详细的安装提示,什么版本的,下载路径都告诉你了:
>> mcrinstaller The GLNXA64 MCR Installer, version 7.17, is: /opt/MATLAB/R2012a/toolbox/compiler/deploy/glnxa64/MCRInstaller.zip MCR installers for other platforms are located in: /opt/MATLAB/R2012a/toolbox/compiler/deploy/<ARCH> <ARCH> is the value of COMPUTER('arch') on the target machine. Full list of available MCR installers: /opt/MATLAB/R2012a/toolbox/compiler/deploy/glnxa64/MCRInstaller.zip For more information, read your local MCR Installer help. Or see the online documentation at MathWorks' web site. (Page may load slowly.) ans = /opt/MATLAB/R2012a/toolbox/compiler/deploy/glnxa64/MCRInstaller.zip
2)到它提示的路径(/opt/MATLAB/R2012a/toolbox/compiler/deploy/glnxa64/MCRInstaller.zip),下载安装包。
3)准备好一个可写入的安装路径
$ cd /opt/MATLAB/ $ ls R2012a $ sudo mkdir MATLAB_Compiler_Runtime $ sudo chmod 777 MATLAB_Compiler_Runtime $ ls MATLAB_Compiler_Runtime R2012a
4)安装
$ unzip MCRInstaller.zip $ ./install
安装好了后,很人性化的提醒你:On the target computer, append the following to your LD_LIBRARY_PATH environment variable: /opt/MATLAB/MATLAB_Compiler_Runtime/v717/runtime/glnxa64:/opt/MATLAB/MATLAB_Compiler_Runtime/v717/bin/glnxa64:/opt/MATLAB/MATLAB_Compiler_Runtime/v717/sys/os/glnxa64:/opt/MATLAB/MATLAB_Compiler_Runtime/v717/sys/java/jre/glnxa64/jre/lib/amd64/native_threads:/opt/MATLAB/MATLAB_Compiler_Runtime/v717/sys/java/jre/glnxa64/jre/lib/amd64/server:/opt/MATLAB/MATLAB_Compiler_Runtime/v717/sys/java/jre/glnxa64/jre/lib/amd64 Next, set the XAPPLRESDIR environment variable to the following value: /opt/MATLAB/MATLAB_Compiler_Runtime/v717/X11/app-defaults
照做就行:
$ sudo gedit /etc/profile
添加到这里:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MATLAB/bin/glnxa64:/opt/MATLAB/MATLAB_Compiler_Runtime/v717/runtime/glnxa64:/opt/MATLAB/MATLAB_Compiler_Runtime/v717/bin/glnxa64:/opt/MATLAB/MATLAB_Compiler_Runtime/v717/sys/os/glnxa64:/opt/MATLAB/MATLAB_Compiler_Runtime/v717/sys/java/jre/glnxa64/jre/lib/amd64/native_threads:/opt/MATLAB/MATLAB_Compiler_Runtime/v717/sys/java/jre/glnxa64/jre/lib/amd64/server:/opt/MATLAB/MATLAB_Compiler_Runtime/v717/sys/java/jre/glnxa64/jre/lib/amd64
$ source /etc/profile