Yiu Dong
Links: http://www.zhihu.com/question/21359230/answer/20127715
Source: Know
Copyright belongs to the author, please contact the author for authorization.
YY Voice from the 4.0 version is based on the QT framework development, and I am the technical leader of this project.
Decide whether to adopt a framework before the first to determine if there is a publishing problem, after all, yy voice as a service to tens of millions of of users of the client software, facing the user hardware and software environment is more complex, And once you encounter a problem such as the inability to install or not run the compatibility issues can result in a large number of user churn.
I test a lot of different hardware and software environment in the pre-research phase, QT itself is not a problem, the problem is more than the VC run-time library MSVCRT.
We are using the dynamic Link qt library, because YY voice code size is large, need to collaborate development of many people, different modules by the DLL partition is more convenient, static link is not realistic.
YY Voice uses the Qt 4.7.1 version.
QT Library and call its EXE DLL placed in the same directory on it, there is a problem to note, QT Image decoding library such as JPEG GIF decoding and so on is a plugin in the form of a release to bring QT imageformats inside of several DLLs, usually is Qjpeg4.dll Qgif4.dll Qico4.dll, in addition, in order for Qt to find these plugins need to be set under the QT plugin loading directory
Call Qcoreapplication::setlibrarypaths (libpaths) when the program starts; Put the directory where the Imageformats is located in the libpaths.
VC Runtime Library installation is a problem, yy voice is VC2008 compiler, starting from vc2005 Microsoft joined the manifest mechanism to control the load of the runtime library, no longer like vc2003 and previous versions as long as the EXE directory on the line. If the MSVCRT distribution package is installed on the user's machine, it is no problem, otherwise the program cannot run.
The simple way to do this is to put the Microsoft.VC90.CRT directory and directory files in the same directory as EXE.
In this case, if the application cannot find the system-installed MSVCRT, it will load its own copy.
Microsoft.VC90.CRT This directory can be found in the VC installation directory, search for it.
Assuming your app is installed in the <app install dir> directory, the structure of the app's post-installation directory might be like this.
<AppInstallDir>YourApp.ExeYourdll1.DllYourdll2.DllQtCore4dll qtgui4. DLL <imageformats> qgif4.< span class= "n" >dll qjpeg4. DLL qico4. DLL <microsoft. Vc90. Crt> microsoft. Vc90. Crt. Manifest msvcr90. DLL msvcp90. DLL
You can also download the installation directory under the YY voice reference file.
YY Voice starting from the 4.0 version is based on the QT development process, as well as the problems encountered