A. mcr 是什么文件格式
.mcr是minecraft的游戏文件,主要记录游戏里区块的数据。如:r.-3.-2.mcr这个文件记录的就是坐标X='-3',Z='-2'里区块的类型。一般在路径为"C:\MCLDownload\Game\.minecraft\saves\MCGame-722e23d7-2c7b-4a7e-888f-a12684cb273f\region"里。
B. 如何将MATLAB程序编译成独立可执行的程序
一、生成独立可执行的程序(exe文件)步骤
1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我基于VS 2003实现。
2、设置编译器。在matlab命令行输入mbuild –setup以及mex –setup,选择安装的c编译器。
3、调用编译器。此处使用MATLAB下的一个GUI平台deploytool下完全实现。在命令窗口输入deploytool即可看到。具体使用方法请Help。
当然,也可以输入mcc -m filaname, filaname为要转成exe的m文件;
注:在以前的版本中,用编译命令mcc -B sglcpp filaname;自2006的版本后,替换为mcc
-mfilaname;
4、安装<matlab
path>\toolbox\compiler\deploy\win32目录下的MCRInstaller。
二、脱离matlab运行可执行程序
MCR是由matlab的运行环境,占用不到300M的对于用不同matlab版本生成的exe文件,MCR版本也会有不同,因此,在程序打包时,最好将相应版本的MCR一起打包。MCR环境的设置文件存放目录如下:
<matlab path>
\toolbox\compiler\deploy\win32
文件名为MCRInstaller.exe。可将其拷贝到自己的文件夹中,(7.0以前的版本是mglinstaller.exe)。
在MATLAB里运行可执行程序的办法是在前面加一个!,比如:!picshow,后缀名可有可无。
在其它没有安装matlab的机器上运行exe文件前:
首先安装matlab的运行环境。在同一机器上可以并存不同版本的matlab环境(换句话说不同版本不兼容)。
其次是要将“MCRinstaller.exe安装目录\runtime\win32”这个路径添加到该计算机的环境变量中,通常是自动加载。
如果没有,也可手动安装,添加的方法是:
右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。
注:在安装过程中会弹出让安装Microsoft.NETFramework可以不用安装。
最后就是将编译生成的相相关文件拷贝到同一目录下,双击即可运行。
问题:目前此方法可完全运行在没有安装MATLAB以及C/C++的电脑上,但是如果是在AMD的CPU可以运行,但是不会出现任何MATLAB编译的界面。
美中不足就是,运行的时候dos的那个黑色地窗口一直存在。下面将实现去除黑屏的办法:
消除运行MATLAB生成的exe程序的dos黑屏的办法
基于MATLAB生成exe文件后,每次运行都存在dos黑屏的问题,现在可以通过以下方法解决:
方法一: 在命令窗口输入:
cd(prefdir)
edit compopts.bat
在打开的文件最后添加以下语句:
A.VC环境下:
set
LINKFLAGS=%LINKFLAGS%/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup
B.LCC环境下:
set LINKFLAGS=%LINKFLAGS%
-subsystemwindows
C. Borland:
set LINKFLAGS=%LINKFLAGS% -aa
保存以后,再重新编译m文件,生成的exe文件运行起来就没有dos窗口了
方法二:使用suppress工具:
下载附件中的suppress压缩包后解压,(当然您可以自己去Google然后再下载)会看到一个suppress.ini文件,用记事本打开,然后将
其中“Name=test.exe”中text.exe的改为你生成的exe文件名。将suppress.exe(有个关盘和显示器的图标),改后的
suppress.ini放到你生成的exe的同目录下。执行suppress.exe或者您自己生成的exe可以了。当然您可以自己修改
suppress.exe的名字,改为您自己想要的名字。
其中的方法一在使用后生成的exe再到没有任何安装MATLAB的机子上运行也不会有黑屏了。
方法二的缺点就是要同时存在您生成的exe以及supress.exe,必须在同一目录下。
C. MATLAB Compiler Runtime怎么用
使用MATLAB Compiler
(一)准备
什么是MATLAB Compiler?MATLAB Compiler能够将你的matlab程序转换为自包含(self-contained)的应用程序和组件,这样你就可以将程序发放给你的终端用户,而且终端用户无需安装matlab就可以运行这些程序。MATLAB Compiler能够生成的应用或者组件包括下面这几类:
1、独立的应用程序
2、C和C++共享库(动态链接库,在Windows平台上是DLL,在Linux平台下是.so文件)
3、Excel插件
4、COM和.NET对象
本文中我们只看matlab是如何生成独立的应用程序的。其他组件生成方式可以参考matlab的帮助文档。注意:在你使用MATLAB Compiler和阅读相关说明文档之前,要求你一定要已经安装了MATLAB Compiler,也就是安装的时候必须要选中MATLAB Compiler复选框。在我使用的matlab 2005a上,安装的是MATLAB Compiler version 4。
假定你已经安装好了MATLAB Compiler。下面我们看一下与MATLAB Compiler相关的两个重要概念MCR和CTF。
MCR的全称是MATLAB Component Runtime,它是一组独立的共享库,通过它能够执行在MATLAB中编写的M文件。MCR支持MATLAB语言的所有功能。
CTF的全称是Component Technology File,这是一种归档技术,通过它,MATLAB将可部署文件包装起来。需要注意的是,位于CTF归档文件中的所有M文件都采用了AES(Advanced Encryption Standard)进行加密,AES的对成密钥则通过1024位的RSA密钥保护。除此之外,CTF还对归档文件进行了压缩。显然,通过这种方式,可以只将可知行的应用程序或者组件发布给终端用户,而保证源代码不被泄漏。
MATLAB Compiler的构建过程分为下面五步:
1、分析依赖关系
2、代码生成
3、创建归档文件(archive)
4、编译
5、链接
事实上,只有前面三步是针对M文件的,第四步和第五步和通常编译C或者C++程序毫无二致。因此,你可能会想到,这不就能够混合使用MATLAB和C以及C++了么?是的。MATLAB Compiler可以让你很简单很容易地做到这一点,不过这并不是本文要讲述的内容。
既然MATLAB Compiler是将M文件中的代码编译成C/C++接口,那么应该使用什么样的C/C++编译器呢?MATLAB Compiler支持的ANSI C和C++编译器有这样一些:
1、Lcc C version 2.4.1,这个是MATLAB Compiler自带的编译器,也是默认的编译器,但是它只能支持C代码;
2、Borland C++ version 5.5,5.6,以及5.5免费版
3、Microsoft Visual C/C++(MSVC)version 6.0和7.1
4、对于UNIX系统,支持的编译器是gcc和g++
(二)开始
要使用MATLAB Compiler,在MATLAB的command窗口或者DOS命令窗口输入mcc即可。比如,我们在MATLAB的command窗口下输入(本文中以加色的字符表示交互信息):
>> mcc
将会出现:
Error: No source files were specified (-? for help).
??? Error executing mcc, return status = 1.
这里的提示表明一定要给mcc指定源代码文件,也即使已经写好的M文件。你也可以输入:
>> mcc -?
或者:
>> help mcc
来获取mcc的帮助信息。当然,详尽的帮助文档应该参考MATLAB Help。
这里以我在上一篇日志中给出的write_dicom.m文件为例进行说明:
如果要生成独立的应用程序,那么只需要在MATLAB的command窗口或者DOS命令窗口输入:
>> mcc -m write_dicom
即可。如果要生成动态链接库,那么只需要将选项改为:
>> mcc -l write_dicom
即可。
注意,必须要确保write_dicom.m在MATLAB的当前工作目录下。否则会出错。
假设我现在是想生成独立的应用程序,那么在执行了:
>> mcc -m write_dicom
之后(在我的机器上这个过程可能需要一分钟左右,有点慢)。在当前工作目录下会多出这样一些文件:
write_dicom_main.c
write_dicom_mcc_component_data.c
write_dicom.ctf
write_dicom.exe
其中,write_dicom_main.c中是包裹函数,write_dicom_mcc_component_data.c中包含了解压write_dicom.ctf的数据(如密钥等)。而write_dicom.exe则是我们可以直接运行的应用程序,很遗憾,这里我们只能通过DOS命令窗口对它进行调用,不过这对于我们而言并没有什么,不是么?接下来,我们打开DOS命令窗口,切换到MATLAB的工作目录下面(也就是这里生成出来的几个文件所在的目录)。然后在命令行下输入:
C:\matlab2006\work>write_dicom ya.jpg ya.dcm
Extracting CTF archive. This may take a few seconds, depending on the
size of your application. Please wait...
...CTF archive extraction complete.
C:\matlab2006\work>
可以看到,write_dicom先从write_dicom.ctf抽取出相关的文件,注意到抽取完成之后在当前目录下会多出一个write_dicom_mcr\文件夹来。在这个文件夹中,不仅包含了原来的程序文件write_dicom.m,还包括了toolbox\下与DICOM读写等有关的M文件,但是这些文件都已经被加密了,直接用MATLAB Editor是看不到文件的真正内容的,出来的是一堆毫无意义的乱码。
上面的程序执行起来同样比较慢,不过,只要它能正确执行,谁在乎这点时间呢?况且我的机器配置并不好^_^
可以看到,此时,ya.dcm已经生成了,就在C:\matlab2006\work\目录下,我们同样可以用CVIEW.exe等等DICOM工具查看图像或者查看DICOM元数据(metadata)。