记一问题
用VS编译器开发程序功能感觉差不多后,想保留一份当前程序exe到共享文件夹中,记录过程中碰到的问题。
vs可以运行程序,但是双击exe发现,程序界面不全。
①让程序界面显示完全
开发的程序用的qt做界面,考虑缺少qt的动态库,但是不知道缺少哪个。
先看是否补充qt动态库后界面能够显示出来,我直接将c盘中qt目录下动态库都拷贝进了程序中,结果运行exe后界面就显示出来了,看来问题确实是缺少qt动态库。
做上一步之前,我将自己的程序动态库静态库配置文件等都放到了一个新目录下,没有直接在原来开发目录下操作。
一下拷贝了一堆qt的动态库,肯定有不需要的动态库,边删边运行exe,发现基本留下的都是程序里用到了的,这样大家就知道自己用到的qt动态库拷贝到exe应用程序同目录下就可以运行exe了。
再说界面没问题后,看功能是否正常,点击解析后程序退出了,看来有问题。
②查看程序自动退出问题
先跟着程序附加到进程调试一遍,程序从头走到尾,解析正常。唯一不对的就是过程中有弹出窗口,显示触发了一个断点,点击继续,又弹出个窗口显示堆已损坏,点击继续,程序又继续运行了。
忽略了这个窗口,因为程序能往下进行。看来是这个问题影响了exe运行。
看代码看不出哪里造成堆损坏,因为这一句调用了别人的代码没有调试过,想调试一下但是进不去代码里,准备配置一下属性,发现链接器里的静态库有是d.lib结尾的,有不是d.lib结尾的。这个混乱的搭配可能是问题所在。也可能影响我上个界面显示的问题的发生。
我的vs解决方案配置是release,所有静态库都换成 不是d.lib结尾的,再运行,没有弹出窗口了。d.lib静态库给debug使用。exe运行后能够继续往下进行了,没有崩。
把刚才为了让界面显示留下的qt动态库中d.dll结尾的几个去掉,也不影响界面显示。
把程序保存到共享文件夹中,可在其他地方正常运行。
特此记录。