其次,当你看到这个长长的标题并点进来的时候:bro,恭喜你终于找到了一个行之有效的解决方案!
~好了,下面我们言归正传。
关于MATLAB App Designer自身的介绍不是此文重点,不再赘述,相信来到这里的小伙伴都已经对其有了不同层次的认知。个人感觉,App Designer确实比其自家的前辈GUIDE更易用、高效、美观,但在软件工具开发层面,其依然无法和大众流行的Python、Jave、MS平台相比,主要体现在代码架构组织和编辑方式让人唉声叹气、打包软件运行效率低得让人欲哭无泪、软件BUG莫名其妙且百度不得其解、打包运行和开发模式下的错误南辕北辙……然而,吐槽虽是,但无法弃之。为了饭碗,一些奇葩的问题还是只能硬着头皮去搞,比如标题所述的问题。
先说下我的开发需求和环境:
1)系统软件:Win10+MATLAB2020a版本
2)
工程目录:首先肯定有个.mlapp文件,里面一堆操作中会去调用.mlapp文件同级目录下(也即工程根目录)的配置文件(包括excel、子文件夹中txt等需要用户配置文件)
。
如上所述,由于需要加载外部配置文件并且不能把目录一锤定音写死,自然在.mlapp的脚本中需要涉及路径问题,一开始想用mfilename函数获取exe的当前路径,测试过程中发现:
在开发模式下,由于运行.mlapp前必须先将相关文件夹和文件添加到path(否则运行直接报错),因此隐藏了mfilename函数实际上无法获取exe绝对路径的问题(猜测脚本应该是在path目录里去找了);但是打包成exe文件后,不管是安装版还是免安装版,点击运行时却存在找不到配置文件的错误
(友情多余提醒:需要在打包时勾选“输出日志文件”或“显示调试窗口”的方式才能捕捉到详细信息)
,因为此时matlab会把整个exe临时复制到以下目录(
忘了截图了,只能凭印象了):“C:\Users\Administrator\AppData\Local\Temp\Administrator\MCRInstaller9.9\……”,也即系统默认的用户文件目录,所以此时自然也就找不到exe同目录下的其他文件了。
于是,开始了中文百度和英文谷歌,各种关键词花式组合搜了好几天,看到的搜索结果大概有以下几种:
1)很多说可以使用mfilename、path函数。
2)部分说可以使用cd、which等系统命令查找exe文件绝对目录。
3)部分说可以使用查找注册表的方式查找exe文件绝对目录……
最后一一测试,发现结果只有三个字:然并卵!
失败的过程就不啰嗦了,感兴趣的朋友可以去亲自体验。无奈之下,一边骂MATLAB软件开发生态的贫瘠,一边只能继续冥思苦想(随便瞎试),最后凭运气发现:
pwd命令可用!
是的,pwd命令在通过
非快捷方式启动
运行exe时,可以获取到exe所在绝对路径!
exe_abs_fullpath = pwd;
所以,看到这的亲们,你们可以激动得动起你们的小手试一下了!
但是,无论怎么操作,发现windows平台上一个自始至终无法解决的问题:使用MATLAB自带打包工具打包的安装版的exe通过快捷方式或开始菜单启动时,pwd命令依然无法获取到exe所在目录……还有这种骚操作??谁的锅??只能说fck了!
但愿以后不再用MATLAB开发客户端软件,愿世界和平!
Matlab
App
Designer
编程教程第1章——面向对象编程
文章目录
Matlab
App
Designer
编程教程第1章——面向对象编程前言一、什么是面向对象编程二、使用步骤1.新建类2.代码说明3.创建点类总结
首先为什么我们学习
Matlab
App
Designer
要先学面向对象编程呢?
1直接原因:
Matlab
app
designer
是面向对象编程的,所有控件都是对象,如果不了解面向对象编程,编起来就会比较懵逼;
2重要原因:面向对象编程好处多多,可以让程序变得简洁易读易扩展易改等等,所
char
exe
Path[LEN_PATH]={0};
GetModuleFileName(NULL,
exe
Path,LEN_PATH); // 得到
exe
文件
的绝对
路径
strrchr(
exe
Path, '\\')[0]= '\0';
printf("
exe
Path: %s\n",
exe
Path);
exe
Path 为程序入口的
路径
比如test1:
int main()
如果UITable中数据格式为cell,则使用 writecell 将UITable中数据写入Excle
同理,若数据格式为 table, 则使用writetable
writetable函数使用格式参考
Matlab
官方文档(writecell是类似的):
https://ww2.mathworks.cn/help/
matlab
/ref/writetable.ht
ml
?searchHighlight=writetable&s_tid=srchtitle
官方文档中还介绍了导出至.txt格式
文件
的用