Windows下开发程序难免会用到动态链接库,然而库依赖在发布时非常容易导致应用程序无法正常启动,常见情况有以下几种:
由此我们可以把依赖的动态库均打包一份防止缺少dll的问题发生,但是要尤其注意dll的版本问题,否则会导致问题二的发生。
说到该问题发生的原因在于应用程序依赖的当前下dll版本不对,根本上的解决方案就是在打包时就做好版本一致的检查。
对于t应用,t提供了windeployqt工具,使用windeployqt xx.exe即可在当前目录下打包所有t依赖库(仅打包t库);
这个是后来遇到的情况,其实原因与问题二相同,只是库之间的依赖传递不太容易发现,出现这个提示说明当前下的ucrtbase.dll是不兼容的,也就是版本不对,需要把开发下的ucrtbase.dll打包进去或者安装S运行。嗯还是用后者来的方便,一步到位,再加上t自带打包工具,isual Studio和t的库依赖问题就基本解决了。