[Matlab]Invalid mex-file 找不到指定的模塊

     在Matlab平臺項目中,之前曾經碰到過這個問題——Invalid mex-file 找不到指定的模塊。

     .cpp  .h和.dll放在不同的文件夾下,在.cpp中使用.h .dll都是使用的相對路徑,通過mex test.cpp編譯是可以成功的,但是在調用的時候就會出問題。(原因未知)

      所以mexw64文件和.h .dll應該在同目錄下,並且使用到mexw64庫函數的.m文件也必須放在同一個目錄下面,所以最後就是.m .mexw64 .h .dll文件都放到同目錄下問題就解決了。


       但這次碰到的問題是使用到的mexw64是給的現成的文件,並沒有發現有別的附帶文件。因爲項目是從上一屆學長手中接過來的,一開始項目目錄很大有幾百兆,慢慢的發現了工程目錄下有許多無關的文件,後來我就把需要的文件都拿出來了經過所有功能測試也沒問題,但是換到別的電腦上測試就報錯了。

mexw64文件是確定存在的,跟.m文件同目錄。經過一番查找,大部分都是說缺dll,具體也沒說缺什麼dll應該怎麼找。

解決方案:

用DLL依賴性分析工具(比如Dependency Walker等)找到mexw64依賴的所有dll,並把dll都跟mexw64放在同目錄下。


出錯原因分析:

由於項目中使用到了Inter的ipp庫,我在電腦上已經安裝的庫中有包含ipp的dll,並且該庫的bin目錄也添加到了環境變量中,項目沒有報錯我覺得是因爲調用mexw64時從環境變量中別的庫中找到了dll,所以在我自己電腦上測試並沒有發現問題。但是換到別的電腦上可能是缺ipp的dll,所以就出問題了。


Tips: 在使用到mexw64文件時,最好把cpp裏面所用到的所有dll都放到項目目錄下,以防在後期調用出現問題,還比較難找原因。



參考鏈接:http://blog.sciencenet.cn/blog-579537-828519.html 

發佈了34 篇原創文章 · 獲贊 39 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章