window+qt+mfc 静态编译问题

因为很少在Windows下做开发,有说错的地方望指教。

platform: Windows

开发工具: vs2008+qt4.7.3

问题: 代码引入了第三方开发库,用到了Windows的com组建,而我们的程序是动态编译的,在一些干净的系统上程序运行提示“程序配置不正确,请重新安装(xp系统)或者sxstrace.exe。。。(win7)”,我们的程序要想跑起来需要安装 Visual C++ 2008 SP1 Redistributable Package (x86)分发包。


解决办法: 一、刚开始我想用静态编译的方式解决这些依赖的问题,在工程设置中如下



window+qt+mfc 静态编译问题_第1张图片


这样问题来了,这样编译器认为我的程序是MFC程序,实际上我的程序是QT开发的,入口函数是main(),而系统编译找到的入口函数是_winMain(),后来把subsystem改成console,


这样编译是编译过去了,但是我的程序是基于QT的界面程序,改成console以后我的界面出不来了,所以静态编译方法失败而告终。

    二、我想静态编译不行就动态吧,那么安装 Visual C++ 2008 SP1 Redistributable Package (x86)增加了哪些dll文件呢,我的exe程序又是如何连接这些dll文件的呢?我有去比较了C:\Windows\winsxs,目录下新增加了几个子目录,把子目录下面的dll文件拷贝到我程序的安装目录,问题依旧,最后发现

这个资源文件指明了我的exe程序依赖的dll,我把*.mainifest拷贝到我安装目录,并附上依赖的dll这时候问题解决了。

    三、.我在网上也看到有说QT完全静态编译的内容大致如下:

   静态的QT 框架,有两个“静态”级别
 (1)、 不依赖QtCore4.dll 等动态链接库,但这种级别的静态库还是要依赖 Msvcp90.dll Msvcrt90.dll,这些Runtime库并没有一起静态进去。
(2)、完全静态,连Msvcp90.dll Msvcrt90.dll,这些Runtime库一并静态包含,这样在没有QT运行库,也没有VC9.0文件库的用户机器上也能很好的运行。
         因为时间问题我没有去尝试,连接如下:
         http://blog.chinaunix.net/uid-25979788-id-3323534.html

你可能感兴趣的:(qt开发)