MATLAB中mexC++代码,.a静态链接库的用法

本文记录了解决MATLAB调用C++静态链接库时遇到的问题及解决方案,详细介绍了如何正确指定静态库文件名进行链接,并最终成功在MATLAB中使用该库的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前两天在GitHub上找到一个MATLAB项目,想在电脑上跑一跑,结果发现运行时总是发现报错:“Undefined function or variable 'faac_wrapper'.”,后来发现这个函数是用C++写的,然后就去查MATLAB里面怎么用C++代码,然后用编译C++代码的时候,又报错发现很奇怪的错误,显示有很多函数没有定义,然后去看头文件,发现这些函数在头文件中都有声明,编译的时候找不到函数定义。仔细看了文件夹的文件,发现有一个后缀名是.a的文件上网查到,这是Linux的静态链接库文件,显然要在Linux上面装MATLAB,费了半天劲装好(过程不说了,网上都有)。然后继续mex我的cpp文件:mex faac_wrapper.cpp -I/mnt/hgfs/Linux_Share/matlab/faac_mex/libs -L/mnt/hgfs/Linux_Share/matlab/faac_mex -llibfaac,发现还是连接不上,在MATLAB的help上看了也没发现是哪里不对,但我感觉肯定是连接静态链接库的时候出问题了,这个时候我就瞎试,最后发现是静态库文件名的写法上有问题,我的静态链接库的名字是libfaac.a,其实静态链接库的命名规则是lib+libname.a,那个libname是你可以自己命名的,所以在连接的时候只需要写-lfaac就可以了,lib和.a都不用加,前面-l后面的路径是静态库的头文件所在的路径,后面-L后面的路径是你的静态链接库的路径,然后mex成功之后生成.mexa64文件,你就可以在m文件里面使用这个函数了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值