使用外部库编译mex函数



我正在尝试使用外部库生成一个mex函数。我使用的是Ubuntu 18和Matlab R2021a。

特别是,我想编译使用名为model的cpp库的file.cpp。我做的是

mex -I<path_library_include> -L<path_library_so_file> -lmodel.so -lboost_system -lstdc++ file.cpp -v

其中,在-I中,我将库的include路径放在-L中,即libmodel.so所在的路径中,然后我又添加了两个库,并在最后添加了我想要编译的源文件。

通过这种方式,我可以编译我的源代码,但当我尝试执行mex函数时,我会得到:

libmodel.so:无法打开共享对象文件:没有这样的文件或目录

我还测试了matlab外部的库,运行良好,这是我用来编译matlab 外部库的命令

gcc -Wall -I<path_library_include> -L<path_library_so_file> main.cpp -lmodel -lboost_system -lstdc++ -o main

Matlab可能有什么问题?

感谢273K给了我正确的方向。问题是LD_LIBRARY_PATH配置不好——事实上运行/sbin/ldconfig -v的库不存在。因此,为了添加共享库,我在/etc/ld.so.conf.d/中创建了一个名为mylib.conf的新文件作为根目录,这并不重要,重要的是名称和扩展名。然后我运行

sudo ldconfig

在那之后,图书馆实际上运行

/sbin/ldconfig -v | grep  model 

其中model是我的库的名称。可以看到输出。

最新更新