我想在matlab中編譯myfunction.m。該函數調用另一個文件夾中定義的另一個函數(otherfunction.m)。這個摺疊被添加到matlab路徑,所以如果我運行:編譯來自不同文件夾的Matlab文件
myfunction
從Matlab命令窗口一切正常。
如果我嘗試編譯如下:
mcc -m myfunction.m -I /CompletePathToOtherFunction otherfunction.m
exe文件不起作用。我怎樣才能管理這個?
我想在matlab中編譯myfunction.m。該函數調用另一個文件夾中定義的另一個函數(otherfunction.m)。這個摺疊被添加到matlab路徑,所以如果我運行:編譯來自不同文件夾的Matlab文件
myfunction
從Matlab命令窗口一切正常。
如果我嘗試編譯如下:
mcc -m myfunction.m -I /CompletePathToOtherFunction otherfunction.m
exe文件不起作用。我怎樣才能管理這個?
從文檔:
「在命令行傳遞-I:
您可以使用-I選項的文件夾的路徑列表的開頭添加到 使用當前編譯當您編譯當前不在MATLAB路徑中的文件夾中的 文件時,此功能非常有用。「
所以在-I
之後,我認爲你應該將路徑傳遞給包含otherfunction.m的目錄,而不是otherfunction.m本身的路徑。
其他一些東西來檢查:
使用which otherfunction
,以確保您使用的otherfunction
正確的版本(如果存在多個版本)。如果路徑上的兩個函數具有相同的名稱,則Matlab默認默認爲路徑中較高的那個。
如果您正在編譯的代碼使用eval
調用函數,那麼即使該目錄位於matlab路徑上,您也需要提供包含該函數的目錄(或明確提供該函數)。
如果一切都失敗,請嘗試使用GUI編譯器代替mcc
命令。要顯示GUI,只需在命令窗口中鍵入deploytool
。一旦你在GUI中選擇了一個項目位置,並指定了一個「控制檯應用程序」(或其他任何你想要的),然後你點擊鏈接「添加主文件」並添加myfunction.m。然後查找鏈接「添加其他引用/文件夾」(或類似的東西),點擊它,然後手動添加包含otherfuncion.m和secondfunction.m的目錄。
我意識到otherfunction.m調用另一個函數(let call secondfunction.m),第二個函數在otherfunction.m的同一個文件夾中,使用try/catch獲得:'未定義函數或方法'secondfunction'。我按照你的建議僅使用目錄的路徑進行編譯。 –
@ Lazza87奇怪。你可以使用GUI來編譯,還是你必須使用代碼?通過在命令窗口中鍵入'deploytool'來打開GUI編譯器。一旦你在GUI中選擇了一個項目位置,並指定了一個「控制檯應用程序」(或其他任何你想要的),然後你點擊鏈接「添加主文件」並添加myfunction.m。然後查找鏈接「添加其他引用/文件夾」(或類似的東西),點擊它,然後手動添加包含otherfuncion.m和secondfunction.m的目錄。然後點擊編譯按鈕。希望這是有效的,因爲那樣我就沒有想法了:-) –
使用GUI編譯器它的工作原理!這意味着我使用的命令有錯誤!無論如何謝謝你! –
您是否試過 'mcc -m myfunction.m -I/CompletePathToOtherFunction'?還用'-v'選項查看了這個輸出結果?任何錯誤,任何警告? – Tobold