微信小程序开发工具升级到最新版测试程序报错-Web前端之家

微信小程序现在非常流行了,如果你都不会玩,或许u are
out。昨天把微信小程序开发工具升级到最新版测试程序,然后打开以前的程序文件,居然老是报错,如图:

在VC++2008的项目中,如何显示地指定要使用的C++库的版本? 

打开调试工具提示WXSS编译错误。

开发环境:VS2008
SP1 + Win2003 SP2 
       
因为我的VS2008安装了SP1补丁,所以有了9.0.30729.1的MFC库文件(MFC90.DLL
MSVCR90.DLL)。 

我就纠结了,本来想回到旧版本去试试,想想还是算了,于是疯狂去找原因,结果居然是编译的文件被重新改过了,因为新版的微信小程序开发工具生成了新编译exe文件,所以需要删除旧版本的,才能正常编译WXSS文件。具体操作如下:

新建了一个MFC应用程序,编译为RELEASE版本,叫做“test1.exe”,可以从程序中的清单文件(manifest)看到以下内容: 

1、打开调试工具,选择Console,然后在底部的输入栏输入命令“openVendor()”然后“enter”运行。

XML code

2、会弹出一个文件夹:

说明本程序需要引用版本号为9.0.21022.8的MFC库和运行时库。 

我们发现有两个.exe文件,其中wcc.exe是安装最新版本生成的,而wcsc.exe是旧版本的,删除旧版本的,然后我们重启下微信小程序开发工具,就可以正常了运行了。

问题一:为什么程序在运行的时候,载入的不是9.0.21022.8版本的却是9.0.30729.1版本的运行库?这是在哪里进行设置的?如何改变这个版本号? 

问题二:(虽然貌似已经解决,但是我想知道的更深一点) 
布署的时候,把X:\VS安装目录\VC\redist下对应的运行库和.manifest文件(都是9.0.30729.1版本的)复制到与test1.exe同一目录下。在一台完全干净的新系统中,会出现“应用程序配置不正确,应用程序未能启动”的错误。 

后来,经过不断的试验,发现应用程序中的MANIFEST文件指定的是9.0.21022.8版本的运行库,然后我使用9.0.21022.8版本的Microsoft.VC90.CRT.manifest文件替换9.0.30729.1版本的Microsoft.VC90.CRT.manifest,配合上30729版本的MFC90.DLL,程序就可以正常运行了。 

简单一点,就是,对于一个使用了新版本DLL功能的应用程序,有以下情况: 
应用程序中的MANIFEST文件[使用了使用了新版本DLL的功能
却指定了旧的版本号] + 新版本的运行库MANIFEST文件 + 新版本的运行库DLL
–> 不可以运行 
应用程序中的MANIFEST文件[使用了使用了新版本DLL的功能
却指定了旧的版本号] + 旧版本的运行库MANIFEST文件 + 旧版本的运行库DLL
–> 不可以运行 
应用程序中的MANIFEST文件[使用了使用了新版本DLL的功能
却指定了旧的版本号] + 旧版本的运行库MANIFEST文件 + 新版本的运行库DLL
–> 可以运行 

注:运行库MANIFEST文件是指Microsoft.VC90.CRT.manifest和Microsoft.VC90.MFC.manifest,运行库DLL是指MSVCR90.DLL
MFC90.DLL 

程序的清单文件不要内嵌,而使用外置的MANIFEST文件,然后手工把生成的text1.exe.manifest中的version=’9.0.21022.8’改成新版本号version=’9.0.30729.1′
,就可以达到以下目标了: 
应用程序 外置的MANIFEST文件[使用了使用了新版本DLL的功能
却指定了新澳门萄京娱乐场官网,新的版本号] + 新版本的运行库MANIFEST文件 +
新版本的运行库DLL –> 可以运行! 
(内嵌清单也是资源,当然可以修改,但是不建议这么做,而且也没必要这么做。)

终于终于,在微软网站找到了关于这个问题的描述。 
 
这的确是个BUG,具体什么时候会修复就不知道了。。。。。。。。 

所以,内嵌清单中的版本号只能为旧版本号,因此目前只能用,旧版本的运行库MANIFEST文件

  • 新版本的运行库DLL ,才可以运行独立发布的程序了。。。

在VS2008中,“项目”–>“属性”–>“配置属性”–>“清单工具”–>“输入和输出”–>“嵌入清单”–>否。

这样程序编译后,假设是mytest.exe,将会产生一个mytest.exe.manifest,发布软件时最好附带上这个manifest文件,用记事本打开,可以看到对应MFC/CRT.manifest的版本。

在VS2008中,“项目”–>“属性”–>“配置属性”–>“清单工具”–>“输入和输出”–>“嵌入清单”–>是。mytest.exe将包含mytest.exe.manifest,不额外产生mytest.exe.manifest。

“配置属性”其它设置:(1)常规–>MFC的使用:在共享DLL中使用MFC;(2)C/C++ 
–>检查64位可一致性问题:否;(3)C/C++ 
–>代码生成–>运行时库:多线程调试DLL(/MDd);(4)链接器–>清单文件–>生成清单:是

发表评论

电子邮件地址不会被公开。 必填项已用*标注