Matlab和C混合编程的一个靠谱思路
写在前面的话
(1)如无特殊需要(如速度),尽量不要做A语言和B语言互相转化这样的事情。
(2)如无特殊需要(如封装),尽量不要做A、B两种语言互相调用代码库的事情,真的容易出错,尤其是数据交换。
前一段时间在一个项目中需要实现matlab和C的混合编程,着实费了很大的功夫,虽然需求满足了,但其实效果很一般,混合编程是有资源浪费的代价的,影响整个程序的性能,但由于项目的特殊性,demo程序需要提交给合作单位,所以需要dll的封装,因此混合编程也是无奈之举。所以建议大家:
但在无数次头疼的查找资料中,偶尔发现了一个大神建议的一种方法很靠谱,不需要复杂的接口操作,只需要一个中间文件进行输入输出导向就可以实现两种代码的协同工作,通过邮件交流,我也大概有了清晰的思路,今天写出来分享给大家,希望对大家有所启发。
本方法有适用范围,你的混合编程目的需要满足:
(1)你只需要程序抛出结果,而不需要将它们本身提交或展示给另外的人。
(2)你的matlab程序太慢,你需要速度上的优化,但又不需要将所有的matlab变成C,同时满足(1)
(3)你手上有两种程序的模块,你确实不像改变任何一种,但又想让他们协同工作,同时满足(1)
如果你写程序的目的满足上述条件的话,请继续往下看,否则建议你还是参考我之前的两篇文章:
windows 32/64位系统 VS2010调用MATLAB2012生成的dll方法
windows 32/64位系统 MATLAB使用MEX方式调用C/C++源码