Open3d某些机器上无法运行
某些机器(py版本3.8.12)无法导入Open3d0.15官方版、我们的微调版,只能导入Open3d0.13官方版。当时有三个方案:一,查到不能加载的原因,并解决。二,编译支持python3.8的open3d0.15。三,在open3d0.12的基础上微调。把pybind项目所有导出内容删除,还是无法加载。把pybind项目所有源文件(.cpp)全部删除,可以导入了。估计这些类没导出,但还是链接了。恢复项目文件,每删除2到4个文件,备份一次项目文件。文件会有相互依赖的关系,只删除不依赖其它文件(类)的文件。第十四轮后,删除raycasting_scene.cpp后可以加载。进一步分析后,发现是embree3.lib引起的。删除此文件,编译的pybind.pyd可以加载,我们的程序也可以正常运行,我们的程序没使用此文件的类。
消息中转小软件
同事有个5000行的小软件,运行几小时后,就“卡死”(界面无法移动,程序还在跑),让我支援。初步讨论的结果,把一个函数从主线程移过来。问题是这个函数有800行,用了几十个成员变量,还调用了几个函数。2.5天后,终于移植完毕。测试了整整一天才上线,上线结果无大碍。幸亏花了几小时,弄了2个小工具用于模拟发送端、接收端。清点战果,移动重构了1300行代码。
消息中转小软件卡顿几秒
两三轮日志后,发现log4写不到30个字符的日志,大约0.01%几率需要800ms或更长时间,其它基本2ms,大部分都是0ms。最初方案:自己写个简单的日志类。改进一:由于是运行日志,不涉及崩溃的问题。所以,可以将日志缓存起来,开启一个线程专门写日志。显然这个日志类不需要考虑多线程。改进二:开启的新线程直接用log4net而不是自己写的类写日志。就算不考虑多线程,这个类也有很多问题要考虑,比如日志文件会变大。改进三,将日志积累起来,减少文件打开的次数,无效果。可能log4已经进行了优化。
关于QT
同事有个用到QT的软件,需要我支援,安装QT总失败。公司七八位用过QT同事都来帮忙,也未解决。后来发现是和绿盾冲突,在虚拟机上先装开发环境,再装绿盾就没问题。个人对QT无好感,C++做界面太亏了。
安装QT,我安装的版本是5.14.2。
安装VS2017。
通过VS扩展安装QT插件。
配置QT版本,如果修改了版本名称,需要修改项目属性。
工具选项的Version必须和项目属性的QT Installation相同,Path是QT的VS子安装包(默认不安装)的目录。
QT的信号槽似乎与dump文件冲突
我刚给绿胶大软件,增加dump文件。
发现在测试平台的机器上生成的dump文件,无法调试。本机测试产生的dump文件,可以调试。
怀疑QT的信号槽和dump文件冲突。
一, 测试平台某个界面的按钮响应事件崩溃产生的dump文件,无法调试。
二, 测试平台 MainWindow::OnInitialUpdate() 和 main函数产生的dump可以调试。
qt 对后勤的压力太大了,c++不好招,去做界面太浪费了。