簡體   English   中英

使用外部庫編譯 mex function

[英]Compile mex function with external libraries

我正在嘗試生成一個 mex function 使用外部庫。 我正在使用 Ubuntu 18 和 Matlab R2021a。

特別是我想編譯我的 file.cpp,它使用我的名為 model 的 cpp 庫。 我所做的是

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

在 -I 中,我將包含庫的路徑放在 -L 中 libmodel.so 所在的路徑中,然后我添加了另外 2 個庫,最后添加了我要編譯的源文件。

通過這種方式,我可以編譯我的源代碼,但是當我嘗試執行 mex function 時,我得到:

libmodel.so:無法打開共享 object 文件:沒有這樣的文件或目錄

我還測試了 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/中以 root 身份創建了一個名為mylib.conf的新文件,名稱只是擴展名並不重要。 然后我跑

sudo ldconfig

之后圖書館實際上正在運行

/sbin/ldconfig -v | grep  model 

其中 model 是我的庫的名稱。 可以看到 output。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM