MATLAB链接静态库?

时间:2015-11-09 16:43:32

标签: matlab static-libraries mex

我想将静态库加载到MATLAB中。使用loadlibrary函数是不可能的,所以我编写了mexfunction,我在静态库中放置了函数的入口点。然后我想用:

创建mex文件
mex -v  -Iinclude -Iusr/include mex_func.c libmy_lib.a

头文件存储在include文件夹中(当前工作目录内),我libmy_lib.a使用的某些标准库(如FFTW)的头文件存储在usr/include文件夹中。结果,我收到错误:

  

collect2:错误:ld返回1退出状态

其中所有错误都是由未定义的FFTW函数引用引起的。这有什么不对?

1 个答案:

答案 0 :(得分:0)

根据Matlab documentation,您必须在库中添加-l前缀,您没有指定扩展名,也删除了第一个lib。如果库不在系统搜索路径上,则在指定库之前,还可以使用-L选项指定库搜索路径。此外,要编译的文件通常在mex语句中排在最后。

mex -v  -Iinclude -Iusr/include -Lusr/path_to_my_libfile -lmy_lib  mex_func.c 

我不确定这是否已经解决了您的问题,但它可能有所帮助。