我想将静态库加载到MATLAB中。使用loadlibrary
函数是不可能的,所以我编写了mexfunction,我在静态库中放置了函数的入口点。然后我想用:
mex -v -Iinclude -Iusr/include mex_func.c libmy_lib.a
头文件存储在include文件夹中(当前工作目录内),我libmy_lib.a
使用的某些标准库(如FFTW)的头文件存储在usr/include
文件夹中。结果,我收到错误:
collect2:错误:ld返回1退出状态
其中所有错误都是由未定义的FFTW函数引用引起的。这有什么不对?
答案 0 :(得分:0)
根据Matlab documentation,您必须在库中添加-l
前缀,您没有指定扩展名,也删除了第一个lib
。如果库不在系统搜索路径上,则在指定库之前,还可以使用-L
选项指定库搜索路径。此外,要编译的文件通常在mex语句中排在最后。
mex -v -Iinclude -Iusr/include -Lusr/path_to_my_libfile -lmy_lib mex_func.c
我不确定这是否已经解决了您的问题,但它可能有所帮助。