QT程序探测所需DLL,静态连接和打包
2014-11-08 00:56
274 查看
1. 如果没有使用静态编译的QT库的话,那么无论VS还是MinGW编译出来的exe程序都要带上一堆DLL,而且必须是准确版本的DLL,对于VS好像还有一个Microsoft.VC90.CRT.manifest的问题(目前还没搞懂)。探测所需DLL可以用以下三个工具之一:
MS Dependence
Dependency Walker
Process Explorer
其中Process Explorer最好,因为它准确的列出了当前运行程序需要的DLL的准确路径。前两个只是列出名字,可是一个机子上有许多同名DLL,到底哪个正确呢?所以就要靠这个工具了,然后一一拷贝到同一目录下即可。
2. 我在WIN7 x64下使用VS2008 SP1编译的程序不能直接在XP下运行,必须安装vcredist_x86.exe,这样太麻烦了,难道在x64下跑还要再带一个文件?貌似有办法:VS2008 编译的程序 Release 版本不装 vcredist_x86.exe 也能跑的解决方法:
http://hi.baidu.com/pass86/item/9cb37795d6d2f2f028164726
3. 打包工具:这里选用Enigma Virtual Box,待续。
-----------------------------------------------------------------
总结:最好既静态编译QT,不仅仅是为了减小文件,更主要是为了避免客户那里库文件混乱从而无法使用;其次是静态编译项目本身,避免携带vcredist_x86.exe。最后还可以打包,那就完美啦~
MS Dependence
Dependency Walker
Process Explorer
其中Process Explorer最好,因为它准确的列出了当前运行程序需要的DLL的准确路径。前两个只是列出名字,可是一个机子上有许多同名DLL,到底哪个正确呢?所以就要靠这个工具了,然后一一拷贝到同一目录下即可。
2. 我在WIN7 x64下使用VS2008 SP1编译的程序不能直接在XP下运行,必须安装vcredist_x86.exe,这样太麻烦了,难道在x64下跑还要再带一个文件?貌似有办法:VS2008 编译的程序 Release 版本不装 vcredist_x86.exe 也能跑的解决方法:
http://hi.baidu.com/pass86/item/9cb37795d6d2f2f028164726
3. 打包工具:这里选用Enigma Virtual Box,待续。
-----------------------------------------------------------------
总结:最好既静态编译QT,不仅仅是为了减小文件,更主要是为了避免客户那里库文件混乱从而无法使用;其次是静态编译项目本身,避免携带vcredist_x86.exe。最后还可以打包,那就完美啦~
相关文章推荐
- Qt程序自动拷贝exe所需dll
- Qt Qt Quick QML 打包发布程序出现缺少dll,窗体空白,点击后无反应等发布不成功的终极解决方法
- Windows 7 Qt5.6打包程序(依赖Dll)
- QT5.4 计算器程序 打包&发布,解决dll的最新解决方案
- QT5.4 计算器程序 打包&发布,解决dll的最新解决方案(图文并茂,很清楚)
- Qt技巧:Win7下打包发布Qt程序(解释的比较清楚,把exe和dll伪装合并成一个文件)
- QT程序打包出错:缺少dll或者应用程序无法启动
- VS2008开发的MFC程序,静态连接的方法
- Qt调用win32的dll判断是否连接上了网络
- windows下如何使用QT编写dll程序
- 如何发布基于Maemo5的Qt程序(打包.deb格式)
- Windows下如何使用QT编写dll程序
- 使用VC2005编译真正的静态Qt程序
- Windows下静态编译QT程序
- 在QT下编写带DLL的程序(二)
- 在QT下编写带DLL的程序(一)
- 静态编译QT程序图片显示的问题
- 使用VC2005编译真正的静态Qt程序
- [转载]QT+MinGW在windows中静态编译程序
- Windows下编译静态Qt程序