我将在我的QT程序中使用MATLAB共享库。
我编写了一个简单的MATLAB函数。
function a = libcalsin(b)
a = b + 4;
end % end of function
Run Code Online (Sandbox Code Playgroud)
然后,我使用MATLAB Library Compiler生成.so和.h文件。
因此,输出文件为:libcalsin.so和libcalsin.h。我将这些文件复制到我的QT项目中,然后使用QT Creator的“添加库”功能将libcalsin库添加到我的QT项目中。因此,以下几行会自动添加到我的.pro文件中:
unix:!macx: LIBS += -L$$PWD/./ -lcalsin
INCLUDEPATH += $$PWD/.
DEPENDPATH += $$PWD/.
Run Code Online (Sandbox Code Playgroud)
在此步骤中,我安装了MATLAB 2015运行时引擎,并使用export命令添加了运行时库路径:
export LD_LIBRARY_PATH=/usr/local/MATLAB/MATLAB_Runtime/v90/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/sys/os/glnxa64:
Run Code Online (Sandbox Code Playgroud)
然后在我的.pro文件中添加以下行:
unix:!macx: LIBS += -L/usr/local/MATLAB/MATLAB_Runtime/v90/runtime/glnxa64/ -lmwmclmcrrt
INCLUDEPATH += /usr/local/MATLAB/MATLAB_Runtime/v90/extern/include
DEPENDPATH += /usr/local/MATLAB/MATLAB_Runtime/v90/extern/include
Run Code Online (Sandbox Code Playgroud)
但是,当我运行程序时,会遇到以下运行时错误:
An Error has occurred while trying to initialize the MATLAB Runtime.
The error is: Fatal error loading library /usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64/libmat.so Error: /usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64/libicuio.so.54: undefined symbol: _ZN6icu_5413UnicodeString9doReplaceEiiPKDsii
Run Code Online (Sandbox Code Playgroud)