做个记录了, 处于崩溃的边缘, 太相信别人的说法了。 看样子技术这个东西还是需要自己去尝试, 才行。
qt做的截取webkit界面, 并自动生成图片的功能。 因为我是个newbit, 所以不知道怎么发布程序到一个没有安装qt的机器上面。
查了查网上的各位大侠的资料。
明白了有两种发布方式, 一种静态编译, 一种动态加载。
静态编译的体积比较大, 而且编译时间比较长, 虽然编译出来是一个独立的文件。 我的工程需要这些特性, 所以放弃了。 就没有再去研究
动态加载, 就需要手工把qt安装目录下面的一些dll, 复制到release文件下面, 这样程序独立运行的时候才可以加载到这些动态库。 我采用了
最笨的办法, 先运行, 然后程序报错, 看少哪个dll, 然后, 就去copy过来, 这个需要什么其实是src里面具体引用了什么包决定的。
解决了运行的问题后, 又碰到了乱码的问题。 开始曾经试过把codes目录下面的 中文动态库复制到 C:/Qt/2010.04/qt/plugins/codecs
但是由于什么原因呢? 竟然不行, 不过是听同事说的, 所以自己也就没有去试了, 发布程序的时候就统统发布一个qt的安装程序。 (汗~~~~),
直到有一天程序发布越来越多, 这样搞实在不行了。 哪个qt的安装实在太大了, 关键是实施的同事很抵触需要安装的程序。 这个需要手工做
的。所以必须解决了。
研究半天, 发现解决办法。
1、 原有程序不做任何修改, 只需要复制C:/Qt/2010.04/qt/plugins/codecs这个文件夹即可(当然, 要把下面其他文字统统删掉, 特别是小日本的)
2、 问题到这一步, 已经可以解决需要安装qt的问题了。 但是这样的话还需要, 在c盘建一个文件夹, 虽然可以程序自动建立, 但是感觉还不是很好的。 于是在程序里面添加。
QApplication app(argc, argv);
QString sPath = app.applicationDirPath();
sPath += QString("/plugins");
app.addLibraryPath(sPath);
然在在程序release目录下面建立一个 plugins 的文件夹, 同样 把C:/Qt/2010.04/qt/plugins/ 目录下面的 codecs 文件夹复制过来。
记得啊, 是 codecs文件夹, 不是底层文件。
ok, 这样webkit里面的中文可以看到了。
乌拉!
nnd, 绕了这么大一个大圈子, 又绕回来。。。
不过细细想下, 从以上过程可以看出qt编译出来的程序, 默认情况会自动搜索编写程序时候的qt的lib路径, 不知道是不是有调整的地方。
另外就需要再程序里面添加一些用户自定义的lib了。