因为很少在Windows下做开发,有说错的地方望指教。
platform: Windows
开发工具: vs2008+qt4.7.3
问题: 代码引入了第三方开发库,用到了Windows的com组建,而我们的程序是动态编译的,在一些干净的系统上程序运行提示“程序配置不正确,请重新安装(xp系统)或者sxstrace.exe。。。(win7)”,我们的程序要想跑起来需要安装 Visual C++ 2008 SP1 Redistributable Package (x86)分发包。
解决办法: 一、刚开始我想用静态编译的方式解决这些依赖的问题,在工程设置中如下
这样问题来了,这样编译器认为我的程序是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完全静态编译的内容大致如下: