0
我想在Linux中創建共享庫,它將被MATLAB加載和使用。 這裏是一個簡單的例子:如何在共享庫中獲取正確的函數名稱?
#include "my_code.h"
void multiply_vector(double *x, double b, int N, double* y)
{
for (int i=0;i<N;i++)
y[i]=b*x[i];
}
在頭文件中,我只是聲明函數。然後用CMake創建共享庫。
add_library(my_library SHARED my_code.cpp)
install(TARGETS my_library LIBRARY DESTINATION .)
然而,當我加載在MATLAB這個庫,通過使用:
loadlibrary('libmy_library.so','my_code.h')
有警告: 「功能 'multiply_vector' 在未找到庫在調用LoadLibrary(線431)」。事實上,當我嘗試檢查「網管-D」命令共享庫的內容,我得到的函數名發生變化,看到這一行:
0000000000000810 T _Z15multiply_vectorPddiS_
爲什麼出現這種情況?如何獲得庫函數的良好名稱,以便可以通過MATLAB調用? 謝謝!