VC6转VS2008

合集下载

中国软件杯6个题目

中国软件杯6个题目

中国软件杯6个题目Windows屏幕变化捕获和回放项目简介 Windows屏幕变化捕获是通过一种检测手段,检测出Windows操作系统屏幕在一定时间间隔以内发生变化的区域,并截取这些变化区域的屏幕图像,将图像数据保存到文件并同时发送到另一主机。

屏幕变化回放就是按照固定的时间间隔连续地回放捕获到的变化区域的图像。

目前大多数VNC软件采用Mirror Driver技术捕获屏幕变化区域,但是对于采用DirectDraw绘制技术的软件引起的屏幕变化无法捕获。

如UltraVNC,TigerVNC 等。

某些软件采用定时截取全屏幕图像再进行全像素比较的方法,能够精确计算出屏幕变化区域,但由于计算量大、消耗内存多导致性能严重下降。

还有一些软件由于会重复捕获变化区域产生数据冗余,导致存储或传输数据量过大。

Splashtop Remote Desktop在苹果AppStore收费软件中下载量一度超过愤怒的小鸟,其PC端软件Splashtop Streamer凭借其出色的变化区域捕获性能取得了很大的成功。

业务场景屏幕变化捕获与回放是远程桌面、VNC软件的核心技术之一,可以应用于下列场景: 1. 远程会议:会议主持人向所有参与者播放自己的屏幕,讲解会议内容。

2. 远程控制:大多数VNC软件都采用了这种技术。

3. 远程协助:应用于远程维护,例如QQ的远程协助。

4. 屏幕录制:可用于教育课件录制、软件操作演示。

5. 远程共享:包括桌面共享和应用程序共享。

例如NetMeeting软件。

功能性需求 1. 能够捕获到使用GDI技术绘制的屏幕变化。

2. 能够捕获到鼠标移动的屏幕变化。

3. 能够捕获到插入符闪烁引起的屏幕变化。

4. 成帧策略:按照固定的时间间隔将在该间隔内发生变化的所有区域进行合并,再剪裁掉冗余区域,最后构造成一帧。

成帧间隔要小于等于33ms,即帧率大于等于30帧/秒。

屏幕回放帧率与捕获帧率相同。

5. 帧压缩:对单个帧或连续帧进行压缩,允许采用成熟的压缩技术。

解决VC++6.0在64位Win7下不能安装的问题

解决VC++6.0在64位Win7下不能安装的问题

解决VC++6.0在64位Win7下不能安装(ānzhuāng)的问题解决(jiějué)VC++6.0在64位Win7下不能安装(ānzhuāng)的问题最近(zuìjìn)院里开c语言(yǔyán),很多同学的64位Win7系统(xìtǒng)不能安装VC++6.0,或者是安装了又与Office2007有冲突。

在下是电脑维修小组的一名成员,帮同学装过很多次,希望能解决大家的问题。

一、先来解决VC++6.0在64位Win7下不能安装的问题:在Windows7下安装或者使用Visual C++ 6.0要注意三大点。

1.在安装或者使用Visual C++ 6.0时,凡是出现兼容性问题提示对话框,一律按以下方式处理——把“不再显示此消息”打上勾,然后选择“运行程序”。

不要怕,本人亲自验证过没有任何“副作用”2.在安装VC的时候,选择“custom(自定义安装)”:接下来就要,注意了——不要选择TOOLS里面的OLE/COM OBJECT VIEWER工具,就可以顺利安装,这个只是个查看工具,不会影响VC++的编译。

3.在“工具——选项——目录”里设置(这一条貌似有的机器一安上就ok了,不用手工调):A.找到这些资源的路径,如我的就是安装在“D:\Program Files\的”里的,所以依次类推。

注意——资源路径一定要对照着手工查找,不要直接复制 !B.下面把一些(yīxiē)资源路径列出:executatble files(可执行文件):D:\Program Files\Microsoft Visual Studio\Common\MSDev98\BinD:\Program Files\Microsoft Visual Studio\VC98\BIND:\Program Files\Microsoft Visual Studio\Common\TOOLSD:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT 注——以下资源(zīyuán)路径为可选添加:C:\windows\system32\wbemC:\windows\system32include files:D:\Program Files\Microsoft Visual Studio\VC98\INCLUDED:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDED:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDElibrary files:D:\Program Files\Microsoft Visual Studio\VC98\LIBD:\Program Files\Microsoft Visual Studio\VC98\MFC\LIBsource files:D:\Program Files\Microsoft Visual Studio\VC98\MFC\SRCD:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDED:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDED:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC(win7最好不要(bùyào)添加此项,不过好像按照(ànzhào)偶说的方式安装(ānzhuāng)的话,就没有这一项,所以这项一般不添加。

VC++6.0在64位Win7下不能安装、VC++6与Office2007(10)不兼容的问题

VC++6.0在64位Win7下不能安装、VC++6与Office2007(10)不兼容的问题
一、卸载office2007,安装2003.(其实问题的本质在于office2007的安装文件大多里面集成了补丁包,安装的时候自动运行,修改了系统的某些项目,造成vc打开文件失败。)或者是卸载office2007后从新安装,但不安装补丁,以后也不下载office的补丁,忽略掉杀毒软件的漏洞提醒(这一条很无语……)。
二、卸载vc++6.0,安装vs2008或vs2010(最近推出的),vs的功能多,集成了vb vc vc# Java等工具,建议编程爱好者,一般人别装了。
三、(这是正点)选择微软的补救措施,在官网下载Filetool.exe的工具(上网搜就可以),解压后双击打开工程文件,生成.dll文件,然后加载到vc的工具栏里。详细方案到网上找吧,提供一个详细的:
接下来就要,注意了——不要选择TOOLS里面的OLE/COM OBJECTVIEWER工具,就可以顺利安装,这个只是个查看工具,不会影响VC++的编译。
3.在“工具——选项——目录”里设置(这一条貌似有的机器一安上就ok了,不用手工调):
A.找到这些资源的路径,如我的就是安装在“D:\Program Files\的”里的,所以依次类推。
D:\Program Files\Microsoft Visual Studio\Common\TOOLS
D:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT
注——以下资源路径为可选添加:
C:\windows\system32\wbem
library files:
D:\Program Files\Microsoft Visual Studio\VC98\LIB

VS2008编译C语言程序详细步骤

VS2008编译C语言程序详细步骤

Visual Studio 2008(VS2008)编译C语言方法 xp,vista,win7(32,64位)都可运行,效果很好!2011-01-01 13:31大家在学习C语言的时候接触的一般都是VC6.0。

但是VC6.0只能编译C 或者C++,不支持C#,集成度不是很高。

而且界面并不十分友好,不能自动猜测关键字,函数的参数也不能自动标示。

最关键的是,编译的时候纠错信息是全英文的,对于初学者十分不方便。

在演示编译一些简单的C程序时VC6.0可以胜任,但是在进行稍微复杂的程序编辑工作时,VC6.0就有点力不从心了。

现在微软的基于.NET的开发软件已经更新至Visual Studio 2010(VS2010)但是VS2010版本还不是最完善,所以目前为止,最流行的还是Visual Studio 2008(内部代号VC9.0,以下简称VS2008)。

大家接触VS2008一般都是从C#或者VB语言开始的,其实VS2008作为一款集成度很高的编译软件,其本身也是支持C 语言的。

大家可以用它来进行C语言的编译。

相较于VC6.0,VS2008更加的智能,更加人性化。

而且VS2008还支持windows7(VC6.0不支持),所以很多装了windows7的朋友就不用头疼了。

下面,就向大家啊演示如何使用VS2008编译C程序,本文中使用VS2008 professional版本。

1.打开VS2008,这就不用多说了吧2.打开了VS2008的主界面,然后选择,文件→新建→项目弹出如图对话框在项目类型中选择VC++→win32 然后在右侧模板中选择win32控制台应用程序,再在下面输入一个名称(项目名称,不用带.C)选择保存位置后确定好了,弹出个对话框,不管它,下一步接下来注意了,这个对话框中,应用程序类型要选择控制台应用程序,附加选项一定要选中“空项目”。

然后点完成。

然后对话框消失,回到VS主界面,这时会在左侧和右侧多了如图工具栏“解决方案管理器”,如果没有,请点击快捷键(最左边)在源文件上点右键,选择“添加→新建项”。

C++的boost库的编译安装

C++的boost库的编译安装

ICU编译(VS2010):ICU提供了unicode和国际化支持,目前的版本是 4.8.1。

ICU的主页是/。

(1). 下载可以从/projects/icu/files/下载源代码版本。

4.8.1是VS2010的,4.4.2才是VS2008的,如果是2010要做转换。

(2). 编译ICU的编译比较简单,打开ICU源代码目录下的source\allinone\allinone.sln,需要转换到VS2008格式,直接转换即可。

然后,选择release,Rebuild Solution即可。

(3). 测试将编译出来的bin目录加入到系统的PATH目录中去。

然后,重新打开allinone.sln工程。

需要通过测试的项目1. cintltst项目2. intltest项目3. iotest分别设置成启动项目,运行即可。

2. bzipbzip的主页是/,从/downloads.html下面下载源代码包即可,boost直接使用源代码来进行编译。

3. zlibzlib的主页是/,/projects/gnuwin32/files/zlib/从该网页下面下载源代码包即可,boost直接使用源代码来进行编译。

4. pythonpython的主页是/,下载python的2.5.2版本,安装即可。

boost默认是会编译python,并且会自动寻找python的安装目录。

ICU编译(MinGW):还未成功编译第一步:到官网,下载boost最新版boost_1_47_0.zip第二步:将boost压缩包解压到C盘根目录下(在C盘操作简单,不会出错),目录为C:\BOOST_1_47_0,里面就是boost的源码和需要编译的文件及文档资料第三步:用打开一个cmd命令窗口,在C:\Program Files\Microsoft Visual Studio 10.0\VC\bin目录下找到VCVARS32.bat,拖到cmd命令窗口,按回车第四步:将cmd中的目录跳转到C:/boost_1_47_0/tools/build/v2下,拖动bootstrap.bat批处理文件到cmd,,按回车键,随即就会在C:/boost_1_47_0/tools/build/v2下生产一个bjam.exe和b2.exe。

filetool--VC++6.0打开文件出错--解决办法

filetool--VC++6.0打开文件出错--解决办法
3、找到X:\Program Files\Microsoft Visual Studio\Common\MSDev98\AddIns\FileTool中的FileTool.dsp(有关工程)或FileTool.dsw(有关工程空间),双击其中的任意一个都可以,然后会自动用vc6.0打开该文件。
4、在vc6.0的IDE中依次点击“Build”---“Build FileTool.dll",稍等一会就会在X:\Program Files\Microsoft Visual Studio\Common\MSDev98\AddIns\FileTool\Debug目录里面建立18个文件,其中就有FileTool.dll这个文件。
一、卸载office2007,安装2003.(其实问题的本质在于office2007的安装文件大多里面集成了补丁包,安装的时候自动运行,修改了系统的某些项目,造成vc打开文件失败。)或者是卸载office2007后从新安装,但不安装补丁,以后也不下载office的补丁,忽略掉杀毒软件的漏洞提醒。
1、到这里/kb/241396/en-us#appliesto(其实在这个网页上就有详细的解释KB241396 )下载FileTool.exe
2、下载下来后解压到vs6.0的AddIns目录,即X:\Program Files\Microsoft Visual Studio\Common\MSDev98\AddIns(X是你的vs6.0的安装目录,下同)。
ห้องสมุดไป่ตู้
补充:有时候vc不能生成.dll的文件,建议到一台正常的电脑上运行,然后再加到自己的电脑上;或者到CSDN网上直接下载FileTool.dll文件,不行留言管我要。个人以为微软仅仅是做了个第二套补救方案,拿一个小小的插件糊弄人,其实真正的问题没解决。也难怪,文件复杂了不好改,不过能用就很好了。

VC6转到换高版本的问题与解决方法

VC6转到换高版本的问题与解决方法

VC6转到换高版本的问题与解决方法VS2008与VC6.0的变化刚从VC++6.0转到VS2008,用着好不习惯,网上找到一帖子,转给大家,希望会有帮助。

-------------------------------------------------------------------------------------------------------------------------------1.MessageBox()VC++6.0:MessageBox("Hello,World!");VS2008:MessageBox(L"Hello,World!"); 或MessageBox(TEXT("Hello,World!"));bo box内容添加方法VC++6.0:Drop-Down List Box Control 的Properties 中的Data 用Ctrl-Enter 输入VS2008:更名为Combo-Box Control ,并在右侧Data 区域用semicolons(即';')分隔输入3.从.net开始就没有classwizard了,全部在属性窗口里了属性窗口中有,闪电图标及右边的都是,包括事件,消息,虚函数重载,加入变量则是在类标上右击->添加变量……4.消息映射VS2005对消息的检查更为严格,以前在VC6下完全正常运行的消息映射在VS2005下编译不通过a,ON_MESSAGE(message,OnMyMessage);OnMyMessage返回值必须为LRESULT,其形式为:afx_msg LRESULT OnMyMessage(WPARAM, LPARAM);如果不符合,则有错误提示:error C2440: “static_cast”: 无法从“void (__thiscall CPppView::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”error C2440: “static_cast”: 无法从“void (__thiscall CPppView::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”b,在VS2005中,OnMyMessage返回值必须为BOOL,且含有一个UINT 参数指出了命令ID,其形式为:afx_msg BOOL OnMyMessage(UINT);如果不符合,则有错误提示.如在VS6中,OnMyMessage2的定义为afx_msg BOOL OnViewZoomBar()时亦可正常编译通过,但在VS2005下,有错误提示:error C2440: “static_cast”: 无法从“BOOL (__thiscall CMainFrame::* )(void)”转换为“BOOL (__thiscall CCmdTarget::* )(UINT)”error C2440: “static_cast”: 无法从“BOOL (__thiscall CMainFrame::* )(void)”转换为“BOOL (__thiscall CCmdTarget::* )(UINT)”5.字符处理在c中广泛使用的strcpy,strcat,strstr等等推荐使用更为安全strcpy_s,strcat_s,strstr_s等来代替.6.数学函数检查VS2005中,数学函数的参数检查更为严格,如pow(2, 45)会引起一个错误提示如下:error C2668: “pow”: 对重载函数的调用不明确d:\program files\microsoft visual studio 8\vc\include\math.h(575): 可能是“long double pow(long double,int)”d:\program files\microsoft visual studio 8\vc\include\math.h(527): 或“float pow(float,int)”d:\program files\microsoft visual studio 8\vc\include\math.h(489): 或“doublepow(double,int)”试图匹配参数列表“(int, int)”时正确的使用为pow(2.0, 45)7.更加符合C++标准如在VS6中,在FOR循环中的循环变量的定义的作用域延伸到循环体外,VS2005则修正了这样的bug。

Visual_C++_6.0兼容性问题(VC6)_全程图解

Visual_C++_6.0兼容性问题(VC6)_全程图解

网上成千上万的诸如“有没有Win7兼容的VC6的下载”、“Win7下Visual C++ 6.0不兼容问题”之类的问题,多数意思是VC6和Win7不兼容,而现在不少学校或是考试用的还是Visual Studio套件,新的Win7或Vista系统下要安装怎么办?说实话我也一直没有试过,所以也想当然的认为Win7下就不能安装VC6,压根就100%不兼容?一直使用高版本的VS(如VS2008和现在用的VS2010)的我今天亲身在Win7下安装一次试试。

注:文中有大量图片附件,请登录后查看!为了说明问题,我这里下载了一个简体中文版的VC6.0:Visual C++ 6.0 简体中文企业版集成SP6完美版运行setup.exe安装程序,会弹出如下的程序兼容性助手提示框,这个是Win7在警告用户vc6存在兼容性问题:此程序存在已知的兼容性问题。

如下图,选中不再显示此消息,点“运行程序”。

(之后再有遇到“此程序存在已知的兼容性问题”的提示时候,也按这个做法处理!)接着安装,进入选择安装类型这一步的时候,要注意。

点“Custom”自定义安装类型:Custom自定义安装里,点中Tools组件,更改选项:把其中的OLE/Com Object Viewer取消,不选择:再返回到组件选择的时候,Tools就变为灰色的勾了,因为里面我们取消了OLE/Com Object Viewer这一顶:其他的就默认安装就可以了,要注意的上面已经都交代了,安装完成,出现安装成功的提示:安装完成后,启动VC6的时候,也出现“此程序存在已知的兼容性问题”的提示,按上面第一步中的处理:选中不再显示此消息,点“运行程序启动后我们新建一个工程和一个c++源文件,编译运行之,如下图:OK,安装完成!!!不过,还有一个小问题,就是VC6打开一个文件或工程的时候,会导致VC6崩溃而关闭,这个帖子里有解决办法:Win7下VC6打开文件报错导致其崩溃的解决办法Win7下VC6打开文件报错导致其崩溃的解决办法根据我之前写的这个文章:Windows 7下载安装 Visual C++ 6.0(VC6) 全程图解在Windows7下安装Visual C++ 6.0后,遇到一个致命的问题打开文件的时候出现异常而导致VC6崩溃,如下图所示:下载 (22.92 KB)2010-9-28 09:53微软针对这个问题发布了一个补丁,原补丁是未编译的VC6工程,见附件filetool_未编译.zip,大家可以手动编译一下。

VS2008开发快速配置

VS2008开发快速配置

VS2008开发快速配置Win32下首先考虑的是Microsoft Visual Studio工具,笔者推荐使用vs2008,目前vs2010、vs2012都已经发布。

不过vs2010的界面布局太过阴暗,而vs2012居然不支持XP。

总而言之,笔者认为vs2008相对成熟,比其它版本的都要好。

在正式配置vs2008再介绍另外两款工具。

第一款工具是Dev-C++,目前版本是4.9.9.2,见下图:如果代码量不多,比方说就几百行的验证小程序,那么用Dev-C++就最合适不过。

第二款工具就是大名鼎鼎的Source Insight,是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C++, C#和Java等程序的分析。

Source Insight能分析你的源代码并在你工作的同时动态维护它自己的符号数据库,并自动为你显示有用的上下文信息。

如果你不习惯用vs查阅代码,那么SI应该是个不错的选择。

可惜的是SI目前不支持UTF-8,如果在Linux下源码中含有中文,用SI打开将会是一堆乱码。

解决这个问题其实不难,使用一个小程序将UTF-8的文件转换成GBK即可。

见下图:言归正传,下面开始配置vs2008。

第一设置字体。

使用VC6.0中经典的Fixedsys字体,菜单【工具】-> 【选项】,在弹出的选项对话框中,选择【环境】->【字体和颜色】,如下图:顺便提一下,vs2010中居然没有Fixedsys字体可以选择,多么可惜。

据我所知,在vs2008是不可以调行间距的,而且人家Ultra Edit就可以设置行间距。

第二设置行号。

菜单【工具】-> 【选项】,在弹出的选项对话框中,选择【文本编辑器】->【所有语言】,如下图:下面是添加头文件和库文件路径。

有两种方法,一种是针对vs,这样添加后对所有的项目都是有效的,一种是针对项目的,推荐后一种做法。

先介绍前一种方法:菜单【工具】-> 【选项】,在弹出的选项对话框中,选择【项目和解决方案】->【VC++ 目录】,在对话框左边依次选择【包含文件】即.h头文件,【引用文件】即库文件,【可执行文件】即dll文件。

vs2008中如何添加MSCOMM控件

vs2008中如何添加MSCOMM控件

好多朋友会有这样的疑问:VC6里有MSCOMM,VS2008中找不到,是不是需要自己下载控件啊?其实,不需要的,你需要自己手工增加这个控件到面板上,增加时会浏览到控件目录,如果该目录上没有就需要返回一层,使用另一个目录,里面有几乎系统上所有的已注册控件。

2008不带这个控件,需要从VC6里拷过来手动注册。

另外,如果真有特殊情况你这个控件竟然还没有在系统中注册,或不小被卸载了,你只要从别的机器上复制这个ocx文件到系统目录,然后使用regsvr32注册就可以了。

然后增加到VC面板上的步骤同上。

当然这种情况极少。

综合起来有两种方法让你在VS2008中找到MSCOMM控件:(一)要对一个监控软件进行升级,拿到原来的源程序,里面用到了MSComm组件进行串口通信,上网上查了下添加MSComm组件的过程:首先找个地方下载MSComm转载..............................................................................................................第一步:将Mscomm.srg, Mscomm32.ocx,Mscomm32.dep三个文件复制到系统文件夹中。

要注意的是,MSComm控件是要授权的,所以必须将其使用“执照”Licence 在注册表中登记注册,下一步就是注册方法。

至于为什么要这样做,可以看看下面的网页:/support/kb/articles/q151/7/71.asp第二步:用Windows下的注册工具regsvr32注册该OCX控件,点击“开始”->"运行",再在中填入(假设操作安装在C盘,WIN2000):Regsvr32 C:\winnt\system32\Mscomm32.ocx第三步:在注册表中手工新建一个主键项:先在点击“开始”->"运行",再在中填入regedit 命令打开注册表,找到HKEY_CLASSES_ROOT\Licenses,在其中添加主键4250E830-6AC2-11cf-8ADB-00AA00C00905并将内容设置为:kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun(注:这项内容也可以用记事本程序打开Mscomm.srg文件看到)................................................................................................................在我的xp系统中试了一下,发现第二步后,注册表中自动出现了第三步需要手工添加的主键,也就是说不需要进行第三步操作。

VC6升至VC2010的常见错误及处理

VC6升至VC2010的常见错误及处理

从VC6.0到VC2008-转自CSDN博客(/orbit)一、_WIN32_WINNT 与_WIN32_IE 设置冲突_WIN32_WINNT 与_WIN32_IE设置不兼容会导致如下C1189致命错误:StdAfx.cppc:\program files\microsoft sdks\windows\v6.0a\include\sdkddkver.h(217) : fatal error C1189: #error :_WIN32_WINNT settings conflicts with _WIN32_IE settingStdAfx.cpp通常是项目中第一个编译的文件,这个错误将导致编译无法继续进行。

产生这个错误的原因是原因是_WIN32_WINNT的版本定义太老,老的VC代码对_WIN32_WINNT的典型设置是:#ifndef _WIN32_WINNT#define _WIN32_WINNT 0x0400#endif0x0400相对于VS2008所带的Plarform SDK(在文件sdkddkver.h中)中_WIN32_IE的定义来说太老了,导致不兼容,可以将其改成0x0501或更高的版本避免这个问题,如下所示:#ifndef _WIN32_WINNT#define _WIN32_WINNT 0x0501#endif也可以将这三行_WIN32_WINNT定义删除,这样就会使用Plarform SDK中的_WIN32_WINNT定义,自然就不存在不兼容问题了。

不过出于对老版本VC的兼容考虑(毕竟以后可能还要使用VC6编译代码),最好这样修改:#if _MSC_VER <= 1200 // MFC 6.0 or earlier#ifndef _WIN32_WINNT#define _WIN32_WINNT 0x0400#endif#endif二、afximpl.h文件中的语法错误MFC出现的时候STL还没有成为C++的标准,所以MFC使用一套自己的模版库,比如CArray、CList、CMap等等,这些类型声明都在afximpl.h文件中。

网络安全课件ppt

网络安全课件ppt
TCP/IP协议栈
应用层
Telnet
FTP
SMTP
HTTP
DNS
SNMP
TFTP
传输层
TCP
UDP
IP
网际层
ARP
RARP
网络 接口层
Ethernet
Token Ring
X.25
其他协议
IEEE 802 RM
IEEE 802.1a 局域网体系结构 IEEE 802.1b 寻址,网络互连与网络管理。 IEEE 802.2 逻辑链路控制 IEEE 802.3 CSMA\CD媒体访问控制方法与物理规范 IEEE 802.3i 10Mbps基带双绞线访问控制方法与物理规范。 IEEE 802.3u 100Mbps基带访问控制方法与物理规范。 IEEE 802.3z 1000Mbps光纤访问控制方法和物理规范 IEEE 802.4 Token-Bus访问控制方法与物理规范 IEEE 802.5 Token-Ring访问控制方法 IEEE 802.6 城域网访问控制方法和物理规范 IEEE 802.7 宽带局域网访问控制方法和物理规范 IEEE 802.8 FDDI访问控制方法和物理规范 IEEE 802.9 综合数据语音网络 IEEE 802.10 网络安全与保密 IEEE 802.11 无线局域网访问控制方法和物理规范 IEEE 802.12 100VG-AnyLAN访问控制方法和物理规范
操作系统诞生
最初的操作系统出现在IBM/704大型机( 20世纪50年代) 微型计算机的操作系统则诞生于20世纪70年代——CP/M
操作系统远古霸主——DOS
Disk Operating System又称DOS(简写),中文全名“磁盘操作系统”。 1981年 DOS有包括:MS-DOS,PC-DOS,FreeDOS,ROM-DOS等。 特点:DOS是一个单用户、单任务的操作系统 ;字符操作界面 ;DOS对多媒体的支持也不尽人意。

VS中工程迁移至VC6.0时应该注意的若干问题

VS中工程迁移至VC6.0时应该注意的若干问题
END_MESSAGE_MAP()
VC高版本的方式:
BEGIN_MESSAGE_MAP(CImageInfoDlg, CDialog)
ON_CBN_SELCHANGE(IDC_COMBO1, &CImageInfoDlg::OnCbnSelchangeCombo1)
ON_CBN_SELCHANGE(IDC_COMBO2, &CImageInfoDlg::OnCbnSelchangeCombo2)
ON_BN_CLICKED(IDC_RADIO2, &CImageInfoDlg::OnBnClickedRadio2)
END_MESSAGE_MAP()
修改为对应版本的方式即可。
5、有关项目设置
输出路径改为Debug。VC高版本默认为$(SolutionDir)$(ConfigurationName)
以下是后来将进行到一半的VS的工程转化成VC6.0工程需要注意的一些问题。
1、转换工程文件,生产工作区文件。
首先下载projectconverter,根据说明,用命令行操作!
2、cannot open file"mfc42ud.lib"
那是由于在VS下使用MFC时候选用了UNICODE编码,而VC6.0的运行库没有此文件,所以发生错误。可以下载同名.lib文件复制到windows/system32文件夹下,或者在VC6.0的Project中设置去掉UNICODE编码模式,使用_MBCS
诸如for(int i){} i不能在循环外使用的,这都是小问题。比较麻烦的是对字符串操作。
例如VC6.0对CString变量赋值比较容易str=“Hello world!';,VS中必须为str=_T("Hello World");.

VS2008常见问题汇总20150923

VS2008常见问题汇总20150923

VS2008常见问题汇总作者邵发官网本文档是《C/C++学习指南》系列教程的配套资料,最新版本请到官网下载。

1.为什么VS2008安装不了?大多数同学的安装都没有问题。

如果你的安装有问题,很可能是你的Windows系统是精简版的。

尝试以下办法:* 重新启动电脑,再安装试试* 重装一个完整版的Windows,不要用ghost安装盘,再试试* 放弃VS2008,试一下VS2010能不能装上。

2.为什么我的VS2008不显示行号?如图所示,每行前面的数字叫做“行号”按照下面的方法,将VS2008的行号显示出来:在菜单里执行“工具 | 选项”左侧选择“文件编辑器 | C/C++”在VS的菜单“工具 | 选项”4.我建立第一个Hello,World项目都不成功?好吧,你是不够仔细了,请严格按照这个文档最后面的附录1、不要有任何改动来操作一遍。

5.编译错误: 找不到stdafx.h ?在新建项目的时候,选择“空项目”6.项目编译成功了,但是在Debug目录下找不到Hello.exe?并不是找不到,而是后缀名默认是不显示的。

在Win7下,在控制面板里找到“文件夹选项”,在“查看”选项卡里,不要勾选“隐藏已经文件类型的扩展名”。

如下图所示。

7.按Ctrl+F5运行程序时,程序一闪即退?这种问题在Win XP上会出现,在Win7以上版本不会出现。

所谓一闪即退,是程序的正确退出。

如果你的电脑上是Win XP,则使用这样的代码:#include <stdio.h>#include <stdlib.h> // 这里加一行int main(){printf("hello,world!\n");system("PAUSE"); // 这里加一行return 0;}8.编译时提示cannot open *.exe for writing?例如:fatal error LNK1168: cannot open Debug/7.exe for writing在WinXP上会有这个问题。

VC6.0 工程转到VS2008一些问题的描述及解决方法

VC6.0 工程转到VS2008一些问题的描述及解决方法
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
(推荐解决方案3)
解决方案:1. Project propert\ linker\ 启用增量链接:否;(关闭增量链接)
(推荐方法1)
1.如果主工程下用到了一些DLL,这些DLL 是在VC6.0下编出来的,我们需要这些DLL 也在VS2008重新编译。否则在Windows7 下编译主工程会有找不到MFC42.lib 等错误。
2.//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2. 设置工程属性->配置属性-> 清单工具->输入和输出->嵌入清单,选择[否]
3. 在工程的.rc文件里面删除了manifest块. 删除VC6.0外部Manifest文件。设置生成嵌入式清单,并在附加清单依赖项: mon-Controls。
下列为VC6.0 工程转到VS2008一些问题的描述及解决方法
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
It defaulted to 0x0501 because you build on XP but defining it as 0x0400 will allow it to run on Windows 2000 as well.

osgEarth编译总结

osgEarth编译总结

首先在osg的编译上有一点记录一下:1 我们下载的第三方依赖3rdParty_x86_x64 这个文件对于VS2008和VS2010来说可能VS2008的提供库要全一些。

2 对于3rdParty_x86_x64文件夹下的x86和x64来说我们的系统如果是32位的应该就只能选x86 对于x64来说我们两个包都是可以选择的,据说在64位的系统上的32位程序是模拟运行的。

如果我们编译时选择直接编译。

那最好是选x86那个包。

在这次的选择中选择x64包结果编译到osgDB库的时候出现了错误。

如果想编译出来的程序只是用于x64 那么可以尝试在x64包的基础上对VS进行相关的设置,应该是不会有很大问题的。

下面主要是对osgEarth进行编译由于osgEarth没有对第三方依赖进行打包,所以我们就不得不自己进行配置相关的依赖。

首先下载源码包,我们进入官网/wiki/Downloads下载源码简单明了。

接下来我们下载第三方依赖:1 GDAL下载:/gdal/wiki/DownloadSource在这里我们选择1.8.1版本,因为在1.9.0版本使用中出现了编译不能通过的情况。

当然我们也可以自己将编译过程中出现的问题解决。

在这里我们只是为了编译GDAL“不节外生枝”下面我们来对这个库进行编译:对于这个版本有两种方法可以编译1 它里面有两个.sln,使用其中之一编译就行2 下载完GDAL的源码后,还需要先运行makegdal_gen.bat这个文件,然后打开X:\Program Files\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT,X代表你VS的安装盘.打开后用cd命令切换到你GDAL的目录下执行命令,nmake /f makefile.vc MSVC_VER=1500 BUILD_DEBUG=YES,其中1500代表VS版本2008,当然你也可以进入nmake配置文件修改.文件编译完成后我们有两种不同的处理方法方法一将生成的lib dll 包括: gdal_i.lib gdal.lib cpl.lib(port目录下) ogr.lib(ogr目录下), 以及gdal17.dll 拷贝到E:\OSG\GDAL\apps下,这一种在后面的使用中会直接将这个作为cmake的应用目录(在工程中添加包含目录时会很麻烦,不推荐采用)方法二GDAL编译完成后的文件存放于C0:\warmerda\bld,包含文件include,lib,data,bin,可将它们拷贝到GDAL文件夹下,置于OSG目录下。

vs不同版本支持的c++版本和PlatformToolset,及在vs中切换c++版本

vs不同版本支持的c++版本和PlatformToolset,及在vs中切换c++版本

vs不同版本⽀持的c++版本和PlatformToolset,及在vs中切换c++版本找c++资料从⽹上找确实更快速,但要想深⼊地理解vc++建议看msdn⽂档。

vs不同版本⽀持的c++版本C++17:vs2017基本⽀持,vs2015部分⽀持。

C++14:vs2017就可以完全⽀持,vs2015基本⽀持,vs2013部分⽀持。

C++11:vs2015及以上可以完全⽀持。

vs2013基本⽀持,vs2012部分⽀持,vs2010及以下版本不⽀持。

数据来源:《》在vs中设定或修改c++的版本修改后.vcxproj⽂件中的PlatformToolset会发⽣改变,⽐如我从⽅法:选中Project - 右键选择【属性】-- 在打开的窗⼝中,找到【c/c++ 】- 【所有选项】 - 即可看到【c++语⾔标准】,从下拉列表中选择⼀项注:此图截⾃vs2017在vs中修改c++的版本vs不同版本对应的PlatformToolset(平台⼯具集)Visual Studio 2012:v110Visual Studio 2013:v120Visual Studio 2015:v140Visual Studio 2017:v141Visual Studio 2019:v142Visual Studio 2022:v143在 Visual Studio 2019 或 Visual Studio 2017 中编译的项⽬与 2017 和 2015 项⽬ ABI 后向兼容。

⾃ Visual Studio 2015 以来,次版本对于每个版本都按 1 更新image-20220319103712341Target Platform Version和Platform ToolSet本质上来说,Platform ToolSet(平台⼯具集)是⽤来构建程序的,⽽ Target Platform Version(这⾥等同于 Windows SDK)是⽤来⾯向你要运⾏的 Windows 版本的参考资料:《》vc版本与vs版本对应关系vc版本与vs版本对应关系如下所⽰:Visual Studio 6 : vc6Visual Studio 2003 : vc7Visual Studio 2005 : vc8Visual Studio 2008 : vc9Visual Studio 2010 : vc10Visual Studio 2012 : vc11Visual Studio 2013 : vc12Visual Studio 2015 : vc14Visual Studio 2017 : vc15其它资料其它:。

VS项目属性的一些配置项的总结

VS项目属性的一些配置项的总结

VS项⽬属性的⼀些配置项的总结⼀、解决⽅案和项⽬⽂件夹包含关系VS解决⽅案和各个项⽬⽂件夹以及解决⽅案和各个项⽬对应的配置⽂件包含关系,假设新建⼀个项⽬ssyy,解决⽅案起名fangan,注意解决⽅案包括项⽬,此时⽣成的最外层⽬录为fangan代表整个解决⽅案的内容都在这个⽂件夹内。

在这个fangan⽂件夹内包含有fangan.sln的解决⽅案配置⽂件和⼀个ssyy⽂件夹,ssyy⽂件夹代表整个ssyy项⽬的所有内容都在这个⽂件夹内,这个⽂件夹内含有ssyy.vcproj的项⽬配置⽂件和.h头⽂件以及.cpp源⽂件。

如果在fangan解决⽅案下再建⽴⼀个新项⽬名为ssyy2,则会在fangan⽂件夹下⽣成⼀个ssyy2⽂件夹存放ssyy2项⽬的所有内容。

由上⾯叙述可以总结出,管理器(解决⽅案或项⽬)都会对应⼀个总的⽂件夹,这个管理器⽂件夹下存放本管理器的配置⽂件以及⼦管理器。

⽐如,解决⽅案是个管理器,它的⽂件夹下含有.sln配置⽂件以及⼦管理器ssyy项⽬和⼦管理器ssyy2项⽬。

另外,默认情况下,项⽬属性设置的⽬录起点为项⽬配置⽂件所在位置,实际上就是项⽬头⽂件和源⽂件所在位置。

补充:vs中建⽴默认的C#项⽬和建⽴默认的C++项⽬⽣成的⽬录结构是不⼀样的。

如果是C#项⽬,则解决⽅案总⽂件夹下就只包含解决⽅案配置⽂件sln和⼀个项⽬总⽂件夹(共两个东东),⽽项⽬总⽂件夹下包含c#源⽂件、项⽬配置⽂件proj、⼀个Properties属性⽂件夹、⼀个obj⽂件夹和⼀个bin ⽂件夹,其中obj和bin⽂件夹下都包含debug和release两个⽂件夹。

obj⽂件夹下存放中间编译结果(扩展名更加项⽬类型⽽不同),⽽bin⽂件夹下存放最终⽣成的结果(扩展名⼀般为exe或dll)。

⽽如果是C++项⽬,则解决⽅案总⽂件夹下就只包含解决⽅案配置⽂件sln和⼀个项⽬总⽂件夹和⼀个Debug⽂件夹以及⼀个Release⽂件夹(共四个东东,其中Debug和Release⽂件夹中存放最终⽣成的结果exe或dll,要注意如果不使⽤Release⽣成,则不存在Release⽂件夹),⽽项⽬总⽂件夹下包含C++源⽂件头⽂件、项⽬配置⽂件和⼀个Debug⽂件夹以及⼀个Release⽂件夹(⼀定要注意,此处的Debug和Release⽂件夹仅仅存放中间编译结果obj,不存放exe和dll之类的东西。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

首先可以直接用Visual Studio 2008的打开VC6的工作区文件和项目文件(dsw和dsp),并将其升级为VS2008的解决方案格式和项目格式(sln和vcproj),VC9的编译器相对于VC6有了很大的变化,一些编译参数和链接参数被废弃(比如/map:line),有一些改变了名称,还有新增的选项,不过不用担心,升级过程会自动对其进行转换,最终都会得到一个正确的解决方案和VC项目文件,这个过程不会遇到太多的麻烦,问题都出在随后的编译过程中,下面就将我在移植的过程中遇到的问题和我的解决方法总结一下,希望对还在用VC6维护代码的朋友有所帮助。

一、_WIN32_WINNT 与_WIN32_IE 设置冲突_WIN32_WINNT 与_WIN32_IE设置不兼容会导致如下C1189致命错误:StdAfx.cppc:\program files\microsoft sdks\windows\v6.0a\include\sdkddkver.h(217) : fatal error C1189: #error : _WIN32_WINNT settings conflicts with _WIN32_IE settingStdAfx.cpp通常是项目中第一个编译的文件,这个错误将导致编译无法继续进行。

产生这个错误的原因是原因是_WIN32_WINNT的版本定义太老,老的VC代码对_WIN32_WINNT的典型设置是:#ifndef _WIN32_WINNT#define _WIN32_WINNT 0x0400#endif0x0400相对于VS2008所带的Plarform SDK(在文件sdkddkver.h中)中_WIN32_IE的定义来说太老了,导致不兼容,可以将其改成0x0501或更高的版本避免这个问题,如下所示:#ifndef _WIN32_WINNT#define _WIN32_WINNT 0x0501#endif也可以将这三行_WIN32_WINNT定义删除,这样就会使用Plarform SDK中的_WIN32_WINNT定义,自然就不存在不兼容问题了。

不过出于对老版本VC的兼容考虑(毕竟以后可能还要使用VC6编译代码),最好这样修改:#if _MSC_VER <= 1200 // MFC 6.0 or earlier#ifndef _WIN32_WINNT#define _WIN32_WINNT 0x0400#endif#endif二、afximpl.h文件中的语法错误MFC出现的时候STL还没有成为C++的标准,所以MFC使用一套自己的模版库,比如CArray、CList、CMap等等,这些类型声明都在afximpl.h文件中。

原来在VC6编译器适用的模版语法可能不适用VC9,特别是当以下四个环境变量设置不兼容时,就会出现这个编译错误,大致情况如下:e:\software\microsoft visual studio 9.0\vc\atlmfc\src\mfc\afximpl.h(625) : error C2059: syntax error : ''e:\software\microsoft visual studio 9.0\vc\atlmfc\src\mfc\afximpl.h(625) : error C2238: unexpected token(s) preceding ';'e:\software\microsoft visual studio 9.0\vc\atlmfc\src\mfc\afximpl.h(629) : error C2059: syntax error : ''e:\software\microsoft visual studio 9.0\vc\atlmfc\src\mfc\afximpl.h(629) : error C2238: unexpected token(s) preceding ';'合理调整stdafx.h中WINVER、_WIN32_WINNT、_WIN32_WINDOWS和_WIN32_IE的设置可以避免这个问题,将三个与Windows版本有关的环境变量设置为0x0501或更高版本,将IE版本的环境变量设置为0x0500以后的版本就可以解决这个问题。

当然,考虑到与旧的VC6代码兼容,可以采用上一个问题中提到的最后一个解决办法,用_MSC_VER进行隔离。

三、旧的CRT库和新的安全CRT库引起的C4996告警解决了环境变量设置不匹配导致的问题后,编译过程就真正开始了,不过首先映入眼帘的应该是成堆的C4996编译告警,对每个使用了含字符串参数的CRT库函数都会有C4996编译告警,一个典型的输出如下所示:f:\project\.....\commonfunc.cpp(280) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.e:\software\microsoft visual studio 9.0\vc\include\string.h(74) : see declaration of 'strcpy'MSDN online 是这样解释的:为了显著增加CRT库的安全性,许多CRT函数都有了一个更安全的新版本,新版本和旧版本的区别就是新版本函数名多了一个_s后缀。

只要一个CRT函数有新的安全版本,编译器就会产生一个C4996告警,不过,出现这个告警的目的并不是说旧版本的CRT函数将淡出CRT库,告警出现只是为了提醒程序员这个函数有更安全的版本存在。

一种安全的或者是被鼓励的做法是用安全版本的函数替换现有的CRT函数,不过对于一个有相当代码量的项目,替换工作量也是巨大的,这可不是用名称查找、替换就能简单解决的问题,因为许多安全版本的CRT函数参数个数也发生了变化。

也可以用预处理指令消除这个告警:#pragma warning( disable : 4996 )或者定义_CRT_SECURE_NO_WARNINGS 压制这个告警(在stdafx.h中define或在项目属性中设置预处理符号,PreProcessor Definitions)。

除了C语言的CRT函数外,POSIX 兼容函数也存在这个告警,解决方法是用POSIX标准名称替换(比如access换成_access)或者是定义_CRT_NONSTDC_NO_WARNINGS 压制这个告警(方法同上)。

四、“CWinApp::Enable3dControls”引起的C4996告警这个是编译使用了老的向导生成的MFC代码时遇到的问题,一个典型的告警信息输出如下所示:CrpFileCrack.cppf:\project\.....\crpfilecrack.cpp(52) : warning C4996: 'CWinApp::Enable3dControls': CWinApp::Enable3dControls is no longer needed. You should remove this call.e:\software\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(4818) : see declaration of 'CWinApp::Enable3dControls'通常向导生成的代码是:#ifdef _AFXDLLEnable3dControls(); // Call this when using MFC in a shared DLL#elseEnable3dControlsStatic(); // Call this when linking to MFC statically#endif这两个函数的调用是旧的MFC版本对新版本的操作系统特性的支持,在新的(那个时候是新的)Windows 95平台上要这样调用一下才能使用新的Windows 3D样式的控件,否则就是老的Win 3.2样子的控件。

想当初喜欢OWL就是因为感觉它的控件比较“酷”,比如那个带底纹的对话框,菱形的checkbox,还有带图标的“OK”按钮,看到MFC作出来的灰灰的界面就觉得土,不过后来就知道MFC做界面也是很漂亮的,比如我做的。

,再打住。

对于新的MFC版本来说已经不需要再调用这两个函数了,参考前面的方法,用_MSC_VER对其隔离就行了:#if _MSC_VER <= 1200 // MFC 6.0 or earlier#ifdef _AFXDLLEnable3dControls(); // Call this when using MFC in a shared DLL#elseEnable3dControlsStatic(); // Call this when linking to MFC statically#endif#endif五、.def文件引起的连接告警对于普通的DLL项目中使用的.def文件通常会引起LNK4017链接告警,如下所示:.\ComFunc.def(4) : warning LNK4017: DESCRIPTION statement not supported for the target platform; ignoredCreating library .\..\Debug/ComFunc.lib and object .\..\Debug/ComFunc.exp一个典型的.def文件通常有以下内容:LIBRARY "XorCryptor"DESCRIPTION 'XorCryptor Windows Dynamic Link Library'EXPORTS; Explicit exports can go here..................消除这个连接告警的方法就是从.def文件中删除DESCRIPTION描述信息,不过这个告警也不是什么大问题,不删也可以。

另一个可能产生的连接告警是LNK4222,通常出现在ocx控件和com组件的项目中,一个典型输出是:Linking....\PlusInModule.def : warning LNK4222: exported symbol 'DllCanUnloadNow' should not be assigned an ordinal.\PlusInModule.def : warning LNK4222: exported symbol 'DllGetClassObject' should not be assigned an ordinal.\PlusInModule.def : warning LNK4222: exported symbol 'DllRegisterServer' should not be assigned an ordinal.\PlusInModule.def : warning LNK4222: exported symbol 'DllUnregisterServer' should not be assigned an ordinal出现这个告警的原因是旧的项目的.def文件通常这样定义ocx和com必需的四个导出函数:EXPORTSDllCanUnloadNow @1 PRIV A TEDllGetClassObject @2 PRIV ATEDllRegisterServer @3 PRIV ATEDllUnregisterServer @4 PRIV A TE其中为这四个重要的导出函数指定了四个顺序号。

相关文档
最新文档