【win10+matlab】.c文件封装函数,.m程序显示未定义函数问题

以下内容纯属我个人在这初用matlab期间遇到的一些问题,和我所用的解决方式。

事情是这样的:

一开始安装好了matlab,用于跑图像处理的一篇论文的代码。

根据本地项目的路径,配置好了相应的文件路径。如下图。


然后我就开始运行该项目。

发现报错了,问题提示是一连串的报错。

我先检查了从配置路径获取到的文件的值是否正确,如下图。


发现没有问题以后,才发现是某个函数执行有问题,从这个函数继续往深处挖,通过多次的函数调用,最终找到了是某个函数显示未定义问题。我在这整个项目里翻了一遍,最终发现这个函数是一个mex文件(即.c文件编译后,用于matlab的文件格式)。可是在这个文件夹当中,明明已经有了mex文件(如下图红框所示),也就是说我所运行的这个.m文件应该是能够直接调用的才对。


通过一番百度,我一开始以为是我的matlab没有安装gcc这样能够编译.c文件的编译器。(通过在命令行输入mex -setup,提示未安装相应的编译器),于是我根据提示去安装了一个【MinGW-64 C/C++】,编译器安装完了以后,发现!还是报函数未定义的错。。。于是乎继续百度。。知道我偶然(把报错的部分一部分一部分地拿去百度。。。)看到了这么一个解决方案,这个人遇到的问题是Link error问题,如下图。


然后有人提出说用这三种方法去解决。我就一个一个试了一下,直到!我试到第三个方法,把之前那些.c文件重新用编译器编译了一遍,竟然!生成了一个跟原有的mex文件奇像无比的mex文件。。。就差了一个字符,如下图。然后我就把所有的.c文件全部重新编译了一遍,发现代码终于能跑通了!


写到这里,总结一下:

如果是跑别人的代码,发现有别人自己写的函数,在你这里发生了函数未定义这种问题,

第一检查函数文件路径,确保你的编译器在运行过程中,自动搜索函数的时候能够覆盖到相应的函数位置。

第二确保函数编译生成的可执行文件,是适用于你的编程环境的。(最好自己再把函数文件全部编译一遍,保险)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值