1. 程式人生 > >ubuntu16.04 matlab2017b 除錯dmp v5 mex 升級位 mex 使用錯誤

ubuntu16.04 matlab2017b 除錯dmp v5 mex 升級位 mex 使用錯誤

dpm release v5 在windows下一直沒調通,估計也是編譯器的問題。對於我這種電腦盲,系統盲的人,一般碰到問題都是找人解決的,多少年來一直是這樣,養成了壞毛病,一碰到系統的事就退縮,這次自己終於突襲成功。

按照網上說的,dmp v5除錯成功:

1.  安裝matlab2017b

推薦部落格:安裝檔案和一步步安裝教程全都有,真心感謝:

2. 下載dpm v5

原網站上好像需要翻牆,我打不開,後來在CSDN下載中下載的

3. 開啟編譯,出現GCC版本過高報警(忘記截圖了)

4. run compile

  說mex使用錯誤,然後就是後面的warning 和 error,基本意思是rror: cannot convert ‘int*’ to ‘const mwSize* {aka const long unsigned int*}’ in initialization    const mwSize *A_dims = MODEL->featdims[L];

用mex -setup,顯示:

mex -setup5 MEX 配置為使用 'gcc' 以進行 C 語言編譯。 警告: MATLAB C 和 Fortran API 已更改,現可支援      包含 2^32-1 個以上元素的 MATLAB 變數。您需要      更新程式碼以利用新的 API。      您可以在以下網址找到更多的相關資訊:      http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html。

開啟後說的是mex 由32位升級64位的事情,反正我也沒太看明白,後來在網上搜了一下,就說把所有 *int或int 陣列,都改成mwSize就行了。我就按照這樣把所有的地方都改了,compile沒問題後就相當於編譯成功了。

5。其他問題

 v5內建了不同的資料夾,剛開編譯可能會說找不到fv_compile,那是因為沒有把裡面的資料夾新增,新增方法有兩種:

第一種是在compile的頭上增加函式:addpath(genpath('.'));

第二種方法就是在matlab工具欄上找到新增路徑,選擇把資料夾及內嵌資料夾,把v5路徑加上就OK了!

6. 現在只是編譯成功,demo成功,其他還沒開始