多字节字符与界面 manifest

之前把调试项目的时候软件界面变成了很古板的那种界面,后来查了一会发现因为字符集的改变,个人习惯统一我一般用同一种字符集,虽然Unicode只涉及语言问题,不过总感觉它占内存,用非字符集,搜索发现将代码中的#ifdef
__UNICODE去掉就可以,注意后面的#endif。


 1 #ifdef _UNICODE
2 #if defined _M_IX86
3 #pragma comment(linker,"/manifestdependency:\"type=‘win32‘ name=‘Microsoft.Windows.Common-Controls‘ version=‘6.0.0.0‘ processorArchitecture=‘x86‘ publicKeyToken=‘6595b64144ccf1df‘ language=‘*‘\"")
4 #elif defined _M_IA64
5 #pragma comment(linker,"/manifestdependency:\"type=‘win32‘ name=‘Microsoft.Windows.Common-Controls‘ version=‘6.0.0.0‘ processorArchitecture=‘ia64‘ publicKeyToken=‘6595b64144ccf1df‘ language=‘*‘\"")
6 #elif defined _M_X64
7 #pragma comment(linker,"/manifestdependency:\"type=‘win32‘ name=‘Microsoft.Windows.Common-Controls‘ version=‘6.0.0.0‘ processorArchitecture=‘amd64‘ publicKeyToken=‘6595b64144ccf1df‘ language=‘*‘\"")
8 #else
9 #pragma comment(linker,"/manifestdependency:\"type=‘win32‘ name=‘Microsoft.Windows.Common-Controls‘ version=‘6.0.0.0‘ processorArchitecture=‘*‘ publicKeyToken=‘6595b64144ccf1df‘ language=‘*‘\"")
10 #endif
11 #endif

不过在搜的过程中碰到了manifest,就顺便了解了一下。

什么是vs
程序的manifest文件

manifest
是VS程序用来标明所依赖的side-by-side组件,如ATL, CRT等的清单。

为什么要有manifest文件

一台pc上,用一组件往往会有不止一个版本(c:/windows/winsxs或系统目录下),程序在加载的时候,不知加载哪个,于是manifest文件来指明。

1.
Manifest是个XML的描述文件,对于每个DLL有DLL的Manifest文件,对于每个应用程序Application也有自己
的Manifest。

2.
对于应用程序而言,Manifest可以是一个和exe文件同一目录下的.manifest文件,也可以是作为一个资源嵌 入在exe文件内部的(Embed
Manifest)。

3.
XP以前版本的windows,会像以前那样执行这个exe文件,寻找相应的dll,没有分别Manifest只是个多余的文件或资源,dll文件会直接到system32的目录下查找,并且调用。

4.
而XP以后的操作系统,则会首先读取Manifest,获得exe文件需要调用的DLL列表(此时获得的,并不直接是DLL文件的本身的位置,而是DLL
的manifest)操作系统再根据DLL的Manifest去寻找对应的DLL<因此就可能区别 不同版本的同一个DLL文件,或是指定一个程序本
身Isolated的DLL>。

5. 如果程序是静态链接的,没有使用dll,只使用了操作系统核心的
Kernel32.dll, User32.dll, Ole32.dll, 或ShDocVW.dll 等,project的设置必须是Use Standard
Windows Libraries、Not Using ATL、No Common Language Runtime
support,那么你可以不需要考虑Manifest 可以关掉它。

时间: 2024-10-12 12:22:50

多字节字符与界面 manifest的相关文章

多字节字符与宽字符重新认识

一直都说,多字节字符,何为多字节,并不只是一个char就是了.英文的字符都是char能表示,但是中文字符,是2个字节表示的. 所以, char s[] = "ha哈哈";     int l = strlen(s);// 6     char c = s[2];// -71 '?' cannot represent s 是占7个字节. s[2]只是'哈'的前半部分,所以决不能写这样的比较代码!!!: if (s[2]=='哈') 所以,字符串中有中文时,一定要格外小心. 甚至,所有的C

通过编写串口助手工具学习MFC过程&mdash;&mdash;(三)Unicode字符集的宽字符和多字节字符转换

通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个串口助手再次熟悉一下MFC,并做了一下记录,以便方便以后查阅.做的过程中多是遇到问题直接百度和谷歌搜索来的,所以很多都是不求甚解,知其然不知其所以然.另外做此工具只是为了熟悉了解,许多功能还没有完善!(开发工具VS2008) (三)Unicode字符集的宽字符和多字节字符转换 在上一节<(二)通过&qu

字符集研究之多字节字符集和unicode字符集

作者:朱金灿 来源:http://blog.csdn.net/clever101 本文简介计算机中两大字符集:多字节字符集和unicode字符集的出现及关系. 首先我们须要明确的是计算机是怎样找到字符的,原来计算机通过一个字符编号来找到字符,这个和学校里每一个学生都有一个学号相似.这里的字符编号和相应的字符就构成了一个字符集.由于计算机最早是在英语国家诞生的,大多数英文信息是由英文字母.数字以及一些其他字符构成了一个128个字符的ASCII字符集.本来这对于英语国家来说够用了.可是随着计算机的普

多字节字符和宽字符

多字节字符和宽字符 开发多语言版软件,经常会碰到字符编码的问题,看了很多资料都说得不是很清楚,终于碰到一篇讲的不错的文章跟大家分享一下!(时间关系,翻译了重点部分) char型和wchar型 在日文版Windows上我们用到字符编码是Shift-JIS,主要的用1byte表示英数字,2byte表示日文字符,这种编码表示的字符称作多字节字符.(中文版Windows字符编码:GB2312) char数组的字符 世界上主流的标准字符编码是Unicode,在Windows上,英数字,日文字符,中文字符,

pathinfo()在php不同版本中对于对多字节字符处理的不同结果

phpinfo()函数在处理路径时,在php的低版本中无法处理多字节字符,这里测试的是php5.3和php5.6 的区别 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <?php // your code goes here echo phpversion(); print_r(pathinfo("/resources/img/stock/wxb001/美景.pn

linux字符图形界面

/etc/inittab 1)  字符界面标识: id:3:initdefault: 2)  图形界面标识: id:5:initdefault: [[email protected] ~]# vi /etc/inittab # # inittab       This file describes how the INIT process should set up #               the system in a certain run-level. # # Author:   

探究VC下的_T(&quot;&quot;),发现:双字节字符/多字节字符是以小端存储的(至少是在VC2013环境下)

从VC6.0过渡到VS2013的程序员应该都会对字符的表现形式感到困惑,每每都要使用_T(""),才能如愿地显示字符. 其实_T("")是一个宏,起一个兼容的作用,使编译器采用默认的字符集形式(Ansi或Unicode)编译字符串. 在VC2013的 tchar.h 文件中,我提取出了部分代码,如下: 这部分代码非常直观,当采用Unicode字符集时,编译器就将_T("")中的字符串编译成Unicode形式,当采用Ansi字符集时,编译器就将_T

【转】CEF3加载网页---多字节字符集和UNICODE字符集

static char* MBSCToCEF(const char* mbcsStr) { wchar_t* wideStr; char* utf8Str; int charLen; charLen = MultiByteToWideChar(CP_UTF8, 0, mbcsStr, -1, NULL, 0); charLen=strlen(mbcsStr)+1; wideStr = (wchar_t*) malloc(sizeof(wchar_t)*charLen); MultiByteToW

Go语言中多字节字符的处理

1 概述 Go语言的字符串是使用 UTF-8 编码的.UTF-8 是 Unicode 的实现方式之一.本文内容包括:UTF-8 和 Unicode 的关系,Go语言提供的 unicode 包和 unicode/utf8 包的使用. 2 UTF-8 和 Unicode 的关系 Unicode一种字符集,是国际标谁化组织(ISO)设计的一个包括了地球上所有文化.所有字母和符号 的编码.他们叫它 Universal Multiple-Octet Coded Character Set,简称 UCS,也