matlab gui 生成獨立可執行的程式

rns521發表於2012-09-05

 

matlab gui 生成獨立可執行的程式 在其他電腦上不能執行

請高手幫幫忙
生成檔案有:imageprocess_main.c
            ImageProcess.ctf
            imageprocess_mcc_component_data.c
            ImageProcess.exe

我來幫他解答
 
滿意回答
要將用Matlab語言編寫的函式檔案編譯成可獨立執行的*.exe檔案(即可脫離Matalab環境的執行程式),首先要安裝和配置好Matlab Compiler,一般來說,在安裝Matlab時就已經安裝了相應版本的Matlab Compiler。只是不同版本的Matlab,其編譯器的使用方法有一定的差異,這一點要引起一定的注意。

在確定安裝好Matlab Compiler後,還需要對Compiler進行適當的配置,方法是在Matlab命令視窗輸入:

Mbuild –setup

然後根據提示執行相應的操作,使用者可根據自己計算機中現有編譯器的情況選擇合適的編譯器,如VC++ 6.0、VC++7.0、Bland C的編譯器等,目前Matlab好象還不支援VC++8.0(我計算機安裝的就是VC++2005,Matlab就無法識別)。當然,如果你的計算機里根本就沒有安裝其他任何語言的編譯器,也可選擇Matlab自帶的Lcc編譯器,其實這個編譯器對大多數使用者已經夠用了(我就是選擇的Matlab自帶的Lcc編譯器)。

配置好編譯器後,自然就是對自己編寫的M檔案進行編譯了。

將M檔案編譯為獨立可執行檔案的語法是:

>>mcc –m fun1.m fun2.m…..

其中fun1就是最後的可執行檔案的名稱。

另外,也可通過採用命令開關-o指定編譯最終目標檔案的名稱,如 mcc –m main.m –o mrank_main,就是將編譯後的檔案指定為mrank_main.exe。

編譯後的生成檔案根據編譯器的版本不同而不同。具體的可參閱相關資料。

如果要在沒有安裝matlab的計算機上執行編譯後的程式,首先要將\MATLAB701\toolbox\compiler\deploy\win32中的MCRinstaller.exe安裝到該計算機上(7.0以前的版本是mglinstaller.exe)。

其次是要將“MCRinstaller.exe安裝目錄\runtime\win32”這個路徑新增到該計算機的環境變數中,新增的方法是:

右擊“我的電腦”“屬性”“高階”“環境變數”“新增”指定一個變數名,然後將上述路徑複製到裡面就可以了。

第三步是將編譯生成的相相關檔案拷貝到同一目錄下(當然其他目錄亦可)。

第四步是開啟MS-dos操作視窗,進入到編譯後的*.exe程式所在的目錄,執行編譯生成的*.exe檔案即可。

需要說明的一個問題:

如果你的程式還附帶有圖片(如Version上的圖示)、Web頁面(如help文件),在編譯的時候可能無法與M檔案一起編譯(因為我沒有試過,也沒有看到有關這方面的介紹),這沒有關係,先在計算機上執行一次你編譯後生成的獨立可執行檔案,這時在同一目錄下會生成一個以你編譯後的程式名+_mcr結尾的資料夾,這時,你只需要把與程式相關的圖示和Web頁面拷貝到該資料夾中的Matlabprogram下面的一個子目錄(一般與用於編譯的資料夾名相同)中即可。


其他的方法還有:(以下是網上搜尋到的方法,沒有試驗過,有興趣的朋友可以試一試)

方法一:在matlab下的workspace裡打comtool,點file-open project將我們先前建好的comtest.cbl工程檔案開啟,再點component--package component就實現了打包,此時到comtest\distrib資料夾裡看,生成的comtest.exe就是打包後的解壓程式,雙擊它會解壓出一些檔案,再點選解壓出來的_install.bat就可以實現安裝 


方法二:如何將gui生成exe ?

已有gui.m檔案和gui.fig檔案

1 在matlab的command視窗中輸入 

mcc -B sgl GUI.m 

2.將上步生成的檔案包括*.m 檔案和*.fig檔案一起考到待執行的機器 

此時仍需matlab所必需的動態連線庫。

3. 將 <matlab path >/extern/lib/win32/mglinstallar.exel拷貝到到待執行機器上

4.在機器上先執行mglinstallar.exe, 然後選擇解壓目錄,將在指定目錄下解壓縮出bin和toolbox兩子目錄,其中在bin\win32目錄下就是數學庫和圖形庫脫離MATLAB執行所需的所有動態連線庫,共有37個。可以將這些.dll考入system32, 也可以直接放在應用程式目錄下。而toolbox目錄則必須與應用程式同一目錄。

5.大功告成。 


方法三:執行mcc -B sgl GUI.m 生成exe檔案,把GUI.exe檔案和GUI.ctf檔案拷貝到目標電腦上,然後在目標電腦上安裝 MCRInstaller.exe ,安裝完以後,我點選GUI.exe,它顯示:this application has requested the Runtime to terminate it in an unusual way。這個可能是哪裡出錯了呢?

Solution:

The segmentation violation can be caused due to a corruption in either the profile of the current user or by corrupted Windows libraries. In order to determine which is the cause, try logging in as a different username and run MATLAB. 

If you are able to successfully launch MATLAB under a different username:

1. Log onto the machine, as the user that is receiving the error.

2. On your desktop, click on Start > Run

3. Type "regedit" in the Open text field and click OK, this will bring up the Registry Editor

4. In the Registry Editor expand the following folders: HKEY_CURRENT_USER > Software > MathWorks > Matlab

5. Under the MATLAB key, find the folder having the same name as the version number of the MATLAB that is crashing; and delete it. This Registry key will be regenerated the next time MATLAB is started. 

Click on the link below to view an image of the Registry Editor, which shows how to delete a registry key for MATLAB 6.5 (R13).

After following these steps, you should be able to launch MATLAB successfully. 

If MATLAB crashes regardless of the user who is logged in, the crash may be caused by corrupted system libraries. For Windows NT, 2000, or XP, some customers have found that reinstalling Windows Service Packs have resolved the issue

這個是啟動6.5時出類似錯誤的解決方法,你試試7.0可否成功吧

相關文章