matlab无法用mcc,使用matlab的mcc时为什么会出现fopen错误?
設置:
Windows 7企業版。
Matlab 7.10.0(R2010a)。
mcc編譯器:Microsoft Visual C ++ 2008 Express。
發生了什么:
我的項目在通過Matlab運行時運行正常,但是在使用mcc編譯后嘗試通過命令提示符運行.exe時,命令提示符會生成錯誤。
我發出的mcc命令是:
mcc -m -v STARTUP1.m -o EXE_REDUC
我在命令提示符中收到的錯誤是:
??? Error using ==> textscan
Invalid file identifier. Use fopen to generate a valid file identifier.
我有一個名為LoadXLS.m的文件,它使用以下命令加載和讀取.csv文件:
fid = fopen(file,'r');
temp_data = textscan(fid,...args...);
然后我處理temp_data。
我正在嘗試加載的csv文件名為spec.csv。它位于我存儲STARTUP1.m的兩個目錄中。 STARTUP1.m的位置也是mcc生成的文件存儲到的位置。我使用了pathtool來“添加子文件夾”這個位置,但是我知道這些位置在編譯時沒有轉移到mbuild。
我嘗試過的事情:
我已經進入并添加了print語句來打印fid的值以確保它是有效的。當我在Matlab中運行它時,它有一個有效值,但是當我在命令提示符下運行它總是返回一個無效值-1。
我已刪除所有addpath()調用,我嘗試使用以下命令將STARTUP1.m目錄添加到mcc ctf存檔:
mcc -m -v -a 'C:\Users\...path...\STARTUP1.m_location' STARTUP1.m -o EXE_REDUC;
但是當我這樣做時,在命令提示符下運行時會出現不同的錯誤:
Cannot open CTF archive file
'C:\...path...\AppData\Local\Temp\mathworks_tmp_7532_28296'
or
'C:\...path...\AppData\Local\Temp\mathworks_tmp_7532_28296.zip'
??? Undefined function or variable 'matlabrc'.
要解決此問題,我已嘗試添加pragma
%#function matlabrc
到STARTUP1.m的頂部嘗試強制包含它,但沒有成功。
我還將spec.csv文件復制到ctfroot中的新目錄并更改了
fid = fopen(...)
為:
[tempFile, message] = fopen(fullfile(ctfroot, 'Added Config Files', ad.spec_file));
消息是:
message is: No such file or directory
目的:
重新排列文件位置是一個充分的解決方法,而exectuable只能在我的計算機上運行,??但是我們的想法是將它獨立并分發給許多不同計算機上的多個人。我希望能夠有一個帶有啟動文件的頂級文件夾,并且在此文件夾中,包含所需的子文件夾數量。啟動文件應該能夠根據需要訪問其中的所有子文件夾和文件。
我在這里閱讀了關于機器上“秘密位置”實際運行的exectuable:http://matlab.wikia.com/wiki/FAQ
我希望能夠將整個文件夾樹及其所有文件組合到一個包含可執行文件的包中,并且能夠在任何地方運行它。
更多信息:
當我將spec.csv文件放在與STARUTP1.m相同的目錄中時,它會使用沒有-a'path'選項的mcc并在LoadXLS.m文件中使用以下內容來查找它:
[tempFile, message] = fopen(ad.spec_file,'r');
此項目包含GUI,生成PDF,生成繪圖,還可以創建zip目錄。
提前謝謝。
總結
以上是生活随笔為你收集整理的matlab无法用mcc,使用matlab的mcc时为什么会出现fopen错误?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GraphPad Prism 列联表教程
- 下一篇: matlab中codegen是什么,ma