发信人: fork (撒哈拉沙漠的沙), 信区: Matlab
标 题: m文件转c/c++后的打包问题
发信站: BBS 哈工大紫丁香站 (Sun Aug 1 15:29:03 2004)
m文件转c/c++后的打包问题
mcc后的程序是否可以完全脱离matlab运行呢,一般情况下可以遵循一个原则,先用“mcc
-B sglcpp 文件名” 来试验,matlab会生成一个可执行文件,然后(就在同一台计算机
上)运行这个这个可执行文件,如果能运行成功,则可以保证它能在完全脱离malab的环境中运行。关于完全脱离matlab运行有几点需要注意:
1. 将“MATLAB6p5\extern\lib\win32”目录下“mglinstaller.exe”文件考出,在目标
机器上运行,解压时注意要保持解压后的路径与第一台计算机上matlab的安装路径一
致。当然你也可以直接把它解压到跟你要运行的那个程序的同一目录,或者是系统目
录,但我不建议这么做,为什么?因为你有可能需要手工拷贝一些工具箱中的文件,
而这些文件在目标机器上的位置必须跟第一台机器的位置相同。这一点我可以解释一
下,用“mcc -B sglcpp 文件名”编译下面的程序:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function fork3(f_image)
I = imread(f_image);
imshow(I)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在编译后的主文件“fork3_mainhg.cpp”中可以找到如下内容:
...................
static const char * path_list_[1] = { "c:\matlab6p5\toolbox\images\images" };
...................
这说明该路径在程序中是以字符串的形式“硬编码”的,并不能在程序执行过程中动态
的自动的搜索目标机器上matlab工具箱的路径,因此两台机器上的路径要保持一致。
2. 另外从这个字符串可以看出,该程序的运行可能会需要用到图像处理工具箱中的一些东
西(图片,dll等)但“mglinstaller.exe”并不打包工具箱中的东西,因此应该按此路
径手工拷贝工具箱中的相关文件。如果不能确定那些是“相关文件”,那就全拷吧。
如果程序中用到了另外一些工具箱,那么都要进行手工拷贝。
3. 上面两步完成之后,还有一件事情要做,将这个路径C:\MATLAB6p5\bin\win32(根据你
的具体情况有所不同)加入到系统 环境变量path中去。(什么是环境变量path,在DOS
窗口中键入“path”,那就是环境变量)加入的方法是(win2k)-->我的电脑--->右键-
-->属性--->高级--->环境变量......剩下的就是找到path做修改了。