寫在前面的話
(1)如無特殊需要(如速度),盡量不要做A語言和B語言互相轉(zhuǎn)化這樣的事情。
(2)如無特殊需要(如封裝),盡量不要做A、B兩種語言互相調(diào)用代碼庫的事情,真的容易出錯,尤其是數(shù)據(jù)交換。
前一段時間在一個項目中需要實現(xiàn)matlab和C的混合編程,著實費了很大的功夫,雖然需求滿足了,但其實效果很一般,混合編程是有資源浪費的代價的,影響整個程序的性能,但由于項目的特殊性,demo程序需要提交給合作單位,所以需要dll的封裝,因此混合編程也是無奈之舉。所以建議大家:
但在無數(shù)次頭疼的查找資料中,偶爾發(fā)現(xiàn)了一個大神建議的一種方法很靠譜,不需要復(fù)雜的接口操作,只需要一個中間文件進(jìn)行輸入輸出導(dǎo)向就可以實現(xiàn)兩種代碼的協(xié)同工作,通過郵件交流,我也大概有了清晰的思路,今天寫出來分享給大家,希望對大家有所啟發(fā)。
本方法有適用范圍,你的混合編程目的需要滿足:
(1)你只需要程序拋出結(jié)果,而不需要將它們本身提交或展示給另外的人。
(2)你的matlab程序太慢,你需要速度上的優(yōu)化,但又不需要將所有的matlab變成C,同時滿足(1)
(3)你手上有兩種程序的模塊,你確實不像改變?nèi)魏我环N,但又想讓他們協(xié)同工作,同時滿足(1)
如果你寫程序的目的滿足上述條件的話,請繼續(xù)往下看,否則建議你還是參考我之前的兩篇文章:
windows 32/64位系統(tǒng) VS2010調(diào)用MATLAB2012生成的dll方法
windows 32/64位系統(tǒng) MATLAB使用MEX方式調(diào)用C/C++源碼