文档库 最新最全的文档下载
当前位置:文档库 › VC6转VS2008

VC6转VS2008

VC6转VS2008
VC6转VS2008

首先可以直接用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.cpp

c:\program files\microsoft sdks\windows\v6.0a\include\sdkddkver.h(217) : fatal error C1189: #error : _WIN32_WINNT settings conflicts with _WIN32_IE setting

StdAfx.cpp通常是项目中第一个编译的文件,这个错误将导致编译无法继续进行。产生这个错误的原因是原因是_WIN32_WINNT的版本定义太老,老的VC代码对_WIN32_WINNT的典型设置是:#ifndef _WIN32_WINNT

#define _WIN32_WINNT 0x0400

#endif

0x0400相对于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.cpp

f:\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 _AFXDLL

Enable3dControls(); // Call this when using MFC in a shared DLL

#else

Enable3dControlsStatic(); // 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 _AFXDLL

Enable3dControls(); // Call this when using MFC in a shared DLL

#else

Enable3dControlsStatic(); // 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; ignored

Creating 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必需的四个导出函数:

EXPORTS

DllCanUnloadNow @1 PRIV A TE

DllGetClassObject @2 PRIV ATE

DllRegisterServer @3 PRIV ATE

DllUnregisterServer @4 PRIV A TE

其中为这四个重要的导出函数指定了四个顺序号。Windows平台上通常用两种方式定位DLL文件中的导出函数,一种是根据导出函数名称,一种是根据顺序号,上学时曾经写过一个显示图片的程序,能处理大多数当时流行的图像格式文件,唯独jpeg格式的搞不定,有一次看到一个图像处理软件中包含了一个LoadJpeg.dll,很显然这个DLL是处理jpeg格式的图像文件的嘛,于是赶快用depends look了一下,顿时高喊:鬼啊~~~。原来这个depends竟然查不到导出函数的名字,后来才知道还有NONAME参数强制用顺序号定位导出函数,于是就常常弄个没有导出函数名字的DLL到处show。。。。嗯,又扯远了。话说为什么旧的系统要以此指定这四个导出函数的顺序号我就没有研究了,反正现在不需要指定了,只要将@1,@2之类的删除就行了,不过不删好像也没什么问题,它们会被自动忽略。

六、使用MFC的消息映射宏引起的编译错误

错误现象之一:

f:\project\.....\plusmaindlg.cpp(220) : error C2440: 'static_cast' : cannot convert from 'void (__thiscall CPlusMainDlg::* )(int,BOOL)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)' None of the functions with this name in scope match the target type

错误现象之二:

f:\project\.....\crpfileopavdlg.cpp(87) : error C2440: 'static_cast' : cannot convert from 'LRESULT (__thiscall CCrpFileOpavDlg::* )(LPCTSTR,int)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)' None of the functions with this name in scope match the target type

以上两个编译错误产生是因为新旧版本的MFC 中对ON_MESSAGE消息映射宏定义不同引起的,先看看老版本的MFC的ON_MESSAGE消息宏定义:

#define ON_MESSAGE(message, memberFxn) \

{ message, 0, 0, 0, AfxSig_lwl, \

(AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))&memberFxn },

再看看新版本的ON_MESSAGE定义:

#define ON_MESSAGE(message, memberFxn) \

{ message, 0, 0, 0, AfxSig_lwl, \

(AFX_PMSG)(AFX_PMSGW) \

(static_cast< LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM) > \

(memberFxn)) },

注意,函数类型没有变化,都是:

LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM);

类型的函数指针(CWnd以及派生类的类成员函数指针),区别之处是新的ON_MESSAGE宏使用C++的static_cast 操作符代替了C类型的强制转换。产生这两个错误其实是因为用户没有按照ON_MESSAGE 宏的约定声明和定义消息响应函数造成的,比如,对于某些不需要处理返回值的消息响应函数,用户通常这样声明和定义消息响应函数:

在头文件中声明:

afx_msg void OnFileProcess(WPARAM wParam,LPARAM lParam);

在源文件中实现:

void CCrpFileOpavDlg::OnFileProcess(WPARAM wParam, LPARAM lParam)

{

.......

}

或者更过分一些,直接指定为实际参数类型:

在头文件中声明:

afx_msg void OnFileProcess(LPCTSTR lpszMessage, int nPercent);

在源文件中实现:

void CCrpFileOpavDlg::OnFileProcess(LPCTSTR lpszMessage, int nPercent)

{

.......

}

旧版本的ON_MESSAGE使用了C类型的强制转换,宏解开后的代码后不会产生错误信息,但是改成对类型检查很严格的static_cast 操作符时就出问题了,因为通不过static_cast 操作符的检查。解决方法就是修改代码,同时吸取教训,普遍使用的方法并不一定就能约定俗成,一切还是要按照规矩来。

错误现象之三:

f:\project\.....\WzButton.cpp(74) : error C2440: 'static_cast' : cannot convert from 'UINT (__thiscall CWzButton::* )(CPoint)' to 'LRESULT (__thiscall CWnd::* )(CPoint)'

Cast from base to derived requires dynamic_cast or static_cast

出现这个错误的原因可是“人力不可抗拒”之原因造成的,因为旧版本的ON_WM_NCHITTEST 宏使用了

UINT (__thiscall CWzButton::* )(CPoint);

类型的类成员函数指针,其定义如下:

#define ON_WM_NCHITTEST() \

{ WM_NCHITTEST, 0, 0, 0, AfxSig_wp, \

(AFX_PMSG)(AFX_PMSGW)(UINT (AFX_MSG_CALL CWnd::*)(CPoint))&OnNcHitTest },

但是新版本变成了:

#define ON_WM_NCHITTEST() \

{ WM_NCHITTEST, 0, 0, 0, AfxSig_l_p, \

(AFX_PMSG)(AFX_PMSGW) \

(static_cast< LRESULT (AFX_MSG_CALL CWnd::*)(CPoint) > (&ThisClass :: OnNcHitTest)) },

注意返回值类型由UINT改成了LRESULT,再加上static_cast的严格检查,所以就出错了。修改的方法就是将你的OnNcHitTest函数由:

afx_msg UINT OnNcHitTest(CPoint point);

改成:

afx_msg LRESULT OnNcHitTest(CPoint point);

不必太在意,这个不是你的错,不过,如果你要维护一个老的界面库(通常很多控件的subclass都会用到ON_WM_NCHITTEST),改起来还是很痛苦地,不扯了,继续下一个。

七、statreg.cpp 和atlimpl.cpp 的废弃(obsolete)问题

在编译老的A TL向导生成的代码时,会遇到下面的编译输出:

StdAfx.cpp

statreg.cpp is obsolete. Please remove it from your project.

atlimpl.cpp is obsolete. Please remove it from your project.

因为老的A TL向导生成的代码通常在stdafx.cpp文件中添加以下代码:

#ifdef _ATL_STATIC_REGISTRY

#include

#include

#endif

#include

根据提示删除#include 和#include 两行代码就行了,不过更好的办法是这样改:

#ifdef _ATL_STATIC_REGISTRY

#include

#if _MSC_VER <= 1200 // MFC 6.0 or earlier

#include

#endif

#endif

#if _MSC_VER <= 1200 // MFC 6.0 or earlier

#include

#endif

八、新的C++编译器不再支持默认类型的变量定义

错误现象是:

f:\project\.....\WzCheckBox.cpp(464) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

产生这个错误的原因是程序中出现了这样的代码:

const some_const_var = 10;

static some_static_bool = FALSE;

新的C++编译器严格按照C++标准,不再支持默认类型的变量定义方式,必须严格指定变量类型,如下使用:

const int some_const_var = 10;

static BOOL some_static_bool = FALSE;

九、for 语句的变量作用域问题

考察下面的代码:

for(int i = 0; i < 120; i++)

{

if(something_happen)

{

break;

}

.............

}

if(i < 120)

{

//something happen

}

在VC6的编译器中,这样的代码是没有问题的,因为VC6的编译器为了兼容旧的Microsoft C/C++编译器,没有严格按照C++标准执行,但是从VC7开始,VC的编译器开始遵守C++标准,所以就会出现“变量i没有定义的错误”。解决的方法也很简单,按照Jim Hyslop 和Herb Sutter的经典对话系列的第四篇中的方法,改成如下就可以了:

int i;

for(i = 0; i < 120; i++)

十、字符串函数的返回值问题

strchr(_tcschr)、strpbrk(_tcspbrk ??)、strrchr(_tcsrchr)和strstr(_tcsstr)这四个函数在VC6的CRT库中定义的返回值都是char *(TCHAR *),所以以前的代码通常是这样使用的:

TCHAR *cp = _tcschr( pszPath, _T('\\') );

//使用*cp,可以通过cp指针修改pszPath的内容

这其实是一个“漏洞”,因为如果pszPath是const char(TCHAR) *字符串,那么就表示它不希望修改字符串的内容,但是调用strchr(_tcschr)函数后就可以通过cp指针修改其内容了,这岂不荒谬?所有在新版本的CRT库中,这几个函数的返回值都改成const char *,这就会导致上面的代码产生编译错误。建议的修改方式是改成如下方式:

const TCHAR *cp = _tcschr( pszPath, _T('\\') );

//不能再通过cp指针修改pszPath的内容

但是这样修改可能对代码的影响比较大,比如下面的代码:

TCHAR buf[256]; //局部缓冲区

......

TCHAR *cp = _tcschr( buf, _T('\\') );

//作为局部缓冲区(非const),希望通过cp修改buf的内容

这种情况怎么办呢?对了,C++还有个const_cast操作符,这时就可以排上用场了:

TCHAR *cp = const_char(_tcschr( buf, _T('\\') ));

不过上面的方法要慎用,除非确定buf是非const的,否则最好老老实实地修改代码。

十一、类成员函数指针做为函数参数的“C3867”错误

考察下面的代码,CWzWindowsHook类的构造函数使用一个该类的成员函数指针,这样构造对象时可以选择消息过滤的handler,可以是MouseMsgFilter,也可以是KeyboardMsgFilter:

typedef BOOL (CWzWindowsHook::*FILTERPROC)(WPARAM wParam, LPARAM lParam);

// A hook used in customization sheet to filter keyboard/mouse events

class CWzWindowsHook

{

private:

FILTERPROC m_pFilter;

BOOL MouseMsgFilter(WPARAM wParam, LPARAM lParam);

BOOL KeyboardMsgFilter(WPARAM wParam, LPARAM lParam);

public:

CWzWindowsHook(FILTERPROC pFilter) : m_pFilter(pFilter)

旧的遗留代码存在这样的用法:

CWzWindowsHook mouseHooker(CWzWindowsHook::MouseMsgFilter);

在VC6的编译器下编译可能没有问题,但是在VC9的编译器下编译会有如下报错:

f:\project\.....\WzWindowsHook.cpp(272) : error C3867: 'CWzWindowsHook::MouseMsgFilter': function call missing argument list; use '&CWzWindowsHook::MouseMsgFilter' to create a pointer to member 虽然C++从C继承来了函数名即是函数地址的语法规则,但是根据C++的标准,类成员函数的指针仍然需要一个取地址符“&”。解决方法很简单,按照提示改成如下代码即可:

CWzWindowsHook mouseHooker(&CWzWindowsHook::MouseMsgFilter);

十二、wchar_t *类型与USHORT *的转换错误

VC6的编译器不支持wchar_t数据类型,wchar_t实际上被定义成unsigned short,VC9的编译器已经支持wchar_t为内置数据类型,但是由一个编译选项控制,这个选项默认是打开的,也就是将wchar_t作为编译器的内置数据类型。但是OLECHAR和WCHAR的定义仍然是unsigned short,在VC6的编译环境中,两者的指针都是USHORT *,相互赋值和做为函数参数传递没有问题,但是如果wchar_t作为编译器的内置数据类型,那就意味着wchar_t *与OLECHAR *或WCHAR *是两种不同类型的指针,相互赋值就会报编译错误,下面的信息就是一个典型的错误输出:

f:\project\.....\shellpidl.cpp(290) : error C2664: 'MultiByteToWideChar' : cannot convert parameter 5 from 'USHORT *' to 'LPWSTR'

Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

解决的方法就是使用C++的reinterpret_cast操作符或使用C-style强制转换,当然也可以在项目属性设置中关闭前面提到的那个选项(这个偶美试过,不知道会不会有其它问题)。

Microsoft_Visual_Studio入门经典教程资料

写在前面 在我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有一本叫《Visual C++ 2005入门经典》的书帮了我不少的忙。因为通常的C++教材都只会介绍C++的语法什么的,很少会告诉我们如何去编译、运行,告诉我们什么是控制台程序,什么事Win程序,什么是GUI程序,C++能干什么,VC和C++的区别是什么。现在有很多的朋友应该也有这些问题吧? 学C++用C++也有几年了,算不上熟悉,算是初窥门径吧,我想我应该做点什么帮助一下那些和曾经的我一样困惑的朋友,特别是学生朋友,告诉他们他们所困惑的问题的答案。记得我学C++的时候,没有人教,有的时候也走了不少弯路,甚至连调试也不会,也不知道可以通过看调用堆栈看调用次序,还自己慢慢的去搜索,好傻啊。 接下来我会做一个《Visual C++ 2010入门教程》系列,用来帮助初学者。刚开始学的时候是很痛苦的,这个我深有体会,特别是身边还没有人能够指导一二的。内容主要涵盖在Windows下面使用C++进行开发的常见内容,Visual Studio 2010的使用,如何创建新项目,如何调试,如果配置项目属性等等,另外还会介绍Visual C++ 2010中新加如的一些内容,包括一些新的STL组建,一些新的语法支持等等。 由于本人水平有限,其中难免有错误,希望大家谅解,如果大家有发现问题还请务必及时指出来,否则误导了他人我就罪不容恕了。 注意,本教程非C++教程,不会教你C++,只会教你如何使用 Visual C++ 2010去练习去学习其它C++教材上面的程序。因此建议大家认真的去看其他的C++教程,在使用Visual C++ 2010实践的时候如果遇到问题可以到这里来参考。推荐《C++ Primer》、《C++程序设计语言》《Visual C++ 2008入门经典》。 第一章:关于Visual Studio、VC和C++的那些事 首先,这三个东西有什么区别呢?VC和C++是相同的吗,有什么区别呢?我刚开始学C++的时候也有这样的问题,在这里我来替大家解释一下他们到底是什么。

Win2008 R2文件迁移实战之系统要求

Win2008 R2文件迁移实战之系统要求 本文阐述将文件服务从Windows 2003 Server 或更高版本的文件服务器迁移到Windows Server 2008 R2 操作系统过程的系统准备篇。迁移中包含的文件服务为数据和共享、本地用户和组、分布式文件系统(DFS) 命名空间、分布式文件系统(DFS) 复制、文件服务器资源管理器(FSRM)、特定于服务器消息块(SMB) 和客户端缓存(CSC) 的组策略、共享文件夹的卷影副本以及服务器标识。 一、系统要求 1.1 硬件要求 请验证目标服务器数据位置是否有足够的可用空间用来迁移数据。确保目标服务器硬盘驱动器的大小大于或等于源服务器硬盘驱动器。 1.2 软件要求 必须满足几个软件要求,才能确保成功迁移。 请查阅下面的迁移矩阵,以确定是否可以将源服务器上的Windows Server 版本迁移到Windows Server 2008 R2。 确定当前在基于x86 的服务器上运行的所有软件都是您要在基于x64 的服务器上运行的软件,并检查当前的所有软件在Windows Server 2008 R2 或Windows Server 2008 R2 基于x64 的服务器核心服务器上都是兼容的。 使用Windows PowerShell cmdlet Cmdlet(发音为"command-lets")是Windows PowerShell 随附的内置命令,默认情况下作为Windows Server 2008 R2 的一部分进行安装。除特别说明外,Windows PowerShell cmdlet 不区分大小写。 尽管大多数文件迁移命令是Windows PowerShell cmdlet,但是您可以在可执行文件名称前面添加与号(&),在Windows PowerShell 会话中运行可执行文件。与号是Windows PowerShell 中的调用运算符。 如果可执行文件不在当前目录中,请添加完全限定的路径名,如以下示例所示。如果可执行文件名称包含空格,请在文件名前面加上.\,然后用引号括住文件名。 不在当前目录中的可执行文件:PS C:\> &

vs2008的系统要求

Visual Studio 2008 安装要求 目录 ? 1. 系统要求 ? 1.1. 支持的体系结构 ? 1.2. 支持的操作系统 ? 1.3. 硬件要求 ? 2. 已知问题 ? 2.1. 安装 ? 2.2. 卸载 ? 2.2.1. 在安装有Visual Studio 早期版本的计算机上 ? 2.2.2. 在未安装Visual Studio 早期版本的计算机上? 1. 系统要求 1.1. 支持的体系结构 ?x86 ?x64 (WOW) 1.2. 支持的操作系统 ?Microsoft Windows X P ?Microsoft Windows Server 2003 ?Windows Vista 1.3. 硬件要求 ?最低要求:1.6 GHz CPU、384 MB RAM、1024x768 显示器、5400 RPM 硬盘 ?建议配置:2.2 GHz 或速度更快的CPU、1024 MB 或更大容量的RAM、1280x1024 显示器、7200 RPM 或更高转速的硬盘 ?在Windows Vista 上:2.4 GHz CPU、768 MB RAM 2. 已知问题 2.1. 安装

2.1.1. Visual Studio SharePoint 工作流功能具有特定的安装要求。 若要使用Visual Studio Tools for Office 中的SharePoint 工作流开发工具,请按照指定的顺序完成下列安装步骤。 1. 安装Windows Server 2003。 2. 安装Internet 信息服务(IIS)。在“控制面板”中依次选择“添加/删除Windows 组件”、“应用程序服务器”、“详细信息”和“Internet 信息服务(IIS)”。 3. 安装 .NET Framework 2.0 和 .NET Framework 3.0。 4. 在IIS 管理器中启用https://www.wendangku.net/doc/0013770262.html, 2.0.5727。 5. 安装Microsoft Office SharePoint Server 2007。请确保运行配置向导。 6. 安装Visual Studio 2008。请使用默认安装,或确保在安装向导的“自定义安装”页上选择“Visual Studio Tools for Office”。 7. (可选)SMTP 服务。安装此服务后,将可以使用SharePoint 中支持电子邮件的功能。若要了解有关这些功能的更多信息,请查阅SharePoint 产品文档。 解决此问题的方法: 尚未提供解决方法。 2.1.2. 不支持从SQL Server Compact 3.5 CTP 或SQL Server Compact 3.5 Beta 升级至SQL Server Compact 3.5 的发行版本。 不支持将SQL Server Compact 3.5 从CTP 和Beta 版本升级至发行版本。 解决此问题的方法: 安装SQL Server Compact 3.5 或Visual Studio 2008 的发行版本之前,请先卸载SQL Server Compact 3.5、SQL Server Compact 3.5 for Devices 和SQL Server Compact 3.5 设计工具的所有CTP 和Beta 版本 2.1. 3. 用户收到错误消息“加载安装组件时遇到问题。取消安装”。 用户收到错误消息“加载安装组件时遇到问题。取消安装”,然后安装被取消。仅当系统未安装Windows Installer 3.1 时才会出现此情况。用户应先安装Windows Installer 3.1,然后再重试安装。 解决此问题的方法: 1. 在“添加或删除程序”中的已安装程序列表中检查是否存在Windows Installer 3.1。

VS2010-MFC编程入门

VS2010/MFC编程入门之前言 分类标签: 编程入门VC++VS2010MFC 鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了解了。但是教程中讲的例子只是一个个简单的例程,并没有可视化窗口。鸡啄米在这套VS2010/MFC编程入门教程中将会给大家讲解怎样使用VS2010进行可视化编程,也就是基于窗口的程序。 C++编程入门系列主要偏重于理论方面的知识,目的是让大家打好底子,练好内功,在使用VC++编程时不至于丈二和尚摸不着头脑。本套教程也会涉及到VC++的原理性的东西,同样更重视实用性,让大家学完本套教程以后,基本的界面程序都能很容易编写出来。 VC++简介 VC++全称是Visual C++,是由微软提供的C++开发工具,它与C++的根本区别就在于,C ++是语言,而VC++是用C++语言编写程序的工具平台。VC++不仅是一个编译器更是一个集成开发环境,包括编辑器、调试器和编译器等,一般它包含在Visual Studio中。Visual Studio包含了VB、VC++、C#等编译环境。当然我们在使用VC++ 6.0的时候为了轻便,总是只单独安装VC++ 6.0。但自微软2002年发布Visual https://www.wendangku.net/doc/0013770262.html,以来,微软建立了在. NET框架上的代码托管机制,一个项目可以支持多种语言开发的组件,VC++同样被扩展为支持代码托管机制的开发环境,所以.NET Framework是必须的,也就不再有VC++的独立安装程序,不过可以在安装Visual Studio时只选择VC++进行安装。

VC++版本的选择:VS2010 因为VC++ 6.0以后的版本不再有独立的安装程序,所以鸡啄米在教程中将不会称VC++ 6. 0以后的版本为VC++ 7.0等等,而是用VC++所属的Visual Studio的版本名称代替,比如VS2003。 近些年VC++主要的版本包括:VC++ 6.0、VS2003、VS2005、VS2008和VS2010。 VC++ 6.0占用的系统资源比较少,打开工程、编译运行都比较快,所以赢得很多软件开发者的青睐。但因为它先于C++标准推出,所以对C++标准的支持不太好。举个例子: for(int i=0; i<5; i++) { a[i] = i; } for语句中声明的变量i,对于VC++ 6.0来说,出了for循环仍能使用。但很显然这与C++标准对于变量生存期的规定不符合。

Microsoft Visual C++ 2008 发布程序的部署问题

Microsoft Visual C++ 2008 发布程序的部署问题VS2008编译的程序在Windows2008环境上运行时经常出现如下问题: 应用程序事件日志如下: 上述两个问题都解决后则可能还出现如下问题:

注意:此时是调用dll出现问题了,而不是运行主程序出错。 主要问题是“找不到从属程序集Microsoft.VC90.MFC”, 解决办法如下:将整个“C:\Application\Microsoft Visual Studio 9.0\VC\ redist\x86\Microsoft.VC90.MFC”拷贝到exe文件所在目录下,如果exe程序所涉及调用的dll与该exe文件不在同一目录,那么须要在dll所在目录也拷贝一份。 详细描述如下: 这个问题有好多Blog和Forum已经讨论过了,但都不详尽,在具体的操作过程中还是有许多疑问。我摘录并整合了许多网络文章,希望能够做个最终了结。 一、VC2005和VC2008编译出来的程序如何发布 https://www.wendangku.net/doc/0013770262.html,/lf426/archive/2008/04/12/46885.aspx VC2005和VC2008编译出来的程序放到别人的电脑上为什么有可能无法运行呢?1:Microsoft Visual C++ 2008 Express Edition可以发布软件吗? 能! 很多人说,因为是Express版,不是Studio,所以只是用来练习语言的,不能发布软件——错! 除了没有MFC和ATL,基本上跟 .net 版本是一样的。发布出来的,是完整的可执行文件。

2:VC 2008 (2005) 发布出来的程序必须附带上他们特定的dll文件吗? 不一定。 如果目标系统是个经常升级的系统,微软已经为其打上了所需要的dll文件补丁了,不需要在软件包里面附加特定的dll文件。特别在Vista系统中,你更是不需要VC8和VC9的dll文件。但是在一些老版本的系统中,这些文件就是必须的。 3:VC2008和VC2005特定的dll文件是哪些? VC8: msvcm80.dll, msvcp80.dll, msvcr80.dll VC9: msvcm90.dll, msvcp90.dll, msvcr90.dll 4:如何部署文件? 首先,请选择release版本;在生成可执行文件(exe文件)的时候,会得到相应的部署文件(manifest文件)。比如,得到a.exe文件,就会同时生成 a.exe.intermediate.manifest文件。请将这2个文件放在同一文件夹下。然后,你需要VC8和VC9的部署文件:Microsoft.VC80.CRT.manifest和 Microsoft.VC90.CRT.manifest。请到你的VC安装目录下寻找,比如: C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT 我这里也把2个部署文件直接贴出来,没装的直接用就是了: Microsoft.VC90.CRT.manifest

visual studio 2010使用教程

visual studio 2010使用教程 在我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有一本叫《Visual C++ 2005入门经典》的书帮了我不少的忙。因为通常的C++教材都只会介绍C++的语法什么的,很少会告诉我们如何去编译、运行,告诉我们什么是控制台程序,什么事Win程序,什么是GUI程序,C++能干什么,VC 和C++的区别是什么。现在有很多的朋友应该也有这些问题吧? 学C++用C++也有几年了,算不上熟悉,算是初窥门径吧,我想我应该做点什么帮助一下那些和曾经的我一样困惑的朋友,特别是学生朋友,告诉他们他们所困惑的问题的答案。记得我学C++的时候,没有人教,有的时候也走了不少弯路,甚至连调试也不会,也不知道可以通过看调用堆栈看调用次序,还自己慢慢的去搜索,好傻啊。 接下来我会做一个《Visual C++ 2010入门教程》系列,用来帮助初学者。刚开始学的时候是很痛苦的,这个我深有体会,特别是身边还没有人能够指导一二的。内容主要涵盖在Windows 下面使用C++进行开发的常见内容,Visual Studio 2010的使用,如何创建新项目,如何调试,如果配置项目属性等等,另外还会介绍Visual C++ 2010中新加如的一些内容,包括一些新的STL组建,一些新的语法支持等等。 由于本人水平有限,其中难免有错误,希望大家谅解,如果大家有发现问题还请务必及时指出来,否则误导了他人我就罪不容恕了。 注意,本教程非C++教程,不会教你C++,只会教你如何使用Visual C++ 2010去练习去学习其它C++教材上面的程序。因此建议大家认真的去看其他的C++教程,在使用Visual C++ 2010实践的时候如果遇到问题可以到这里来参考。推荐《C++ Primer》、《C++程序设计语言》《Visual C++ 2008入门经典》。 第一章关于Visual Studio、VC和C++的那些事 第二章安装、配置和首次使用VS2010 本章将帮助大家安装Visual C++ 2010,帮助大家做一些常见的配置,以及第一次使用它来写HelloWord程序。 安装 Visual C++ 2010是属于Visual Studio 2010的一部分,这个在前一章中已经讲解过,实际上Visual C++ 2010也有更多的子版本,正如Windows7有旗舰版、家庭高级版、家庭初

BarTender系统要求和兼容性

BarTender对系统和兼容性的要求 BarTender中文官网编辑发布 BarTender在标签、条形码、证卡和RFID 标记的设计和打印领域是全球首屈一指的软件。鉴于BarTender系统要求和兼容性,在安装BrTender10.1前,请先检查一下您的计算机系统,以免出现安装不起来或失败的情况。 支持的操作系统: Windows Server 2003(SP1 和更高版本)、Server 2008、Server 2008 R2、Server 2012、Server 2012 R2、XP(SP3 和更高版本)、Vista、Windows 7、Windows 8 和Windows 8.1。包括所有32 位和64 位(x64) 版本。 硬盘: 完整版的多语言BarTender应用程序套件需要多达 1.1 GB 的可用空间。若要支持打印机作业和事件消息的数据库记录功能(可选),则还需要额外的可用磁盘空间。 CPU:1 GHz 或更高 内存:512 MB 或更高 显示器分辨率:推荐使用1024 x 768 或更高

.NET Framework: 需要使用.NET Framework 3.0 (SP2)。BarTender 安装程序会自动安装所有必需的.NET Framework 组件。对于早期的64 位操作系统(XP、Windows Server 2003 和Windows Server 2008 pre-R2),安装程序需要连接到互联网并下载所需的.NET 组件。对于较新的64 位操作系统(Vista、Server 2008 R2、Windows 7、Server 2012 和Windows 8),都已随附了所需的组件。 可选数据库: 打印作业和事件消息的记录功能需要使用Microsoft SQL 2005 Express(随附于BarTender)或Microsoft SQL 2005(或更高版本)Server(须从数据库供应商购买)。 Web 浏览器: History Explorer(历史记录浏览器)和BarTender 帮助系统需要使用Microsoft Internet Explorer v6 或更高版本。 (注意:自动化版和企业自动化版需要使用TCP/IP 网络协议。)想要了解更多关于BarTender内容可参考BarTender教程服务中心。

Visual C2010简单教程

《Visual C++ 2010入门教程》系列一:关于Visual Studio、VC和C++的那些事 写在前面 在我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本 C++的教材,有的适合我,有的不适合我,其中有一本叫《Visual C++ 2005入门经典》的书帮了我不少的忙。因为通常的C++教材都只会介绍C++的语法什么的,很少会告诉我们如何去编译、运行,告诉我们什么是控制台程序,什么事Win程序,什么是GUI程序,C++能干什么,VC和C++的区别是什么。现在有很多的朋友应该也有这些问题吧? 学C++用C++也有几年了,算不上熟悉,算是初窥门径吧,我想我应该做点什么帮助一下那些和曾经的我一样困惑的朋友,特别是学生朋友,告诉他们他们所困惑的问题的答案。记得我学C++的时候,没有人教,有的时候也走了不少弯路,甚至连调试也不会,也不知道可以通过看调用堆栈看调用次序,还自己慢慢的去搜索,好傻啊。 接下来我会做一个《Visual C++ 2010入门教程》系列,用来帮助初学者。刚开始学的时候是很痛苦的,这个我深有体会,特别是身边还没有人能够指导一二的。内容主要涵盖在Windows下面使用C++进行开发的常见内容,Visual Studio 2010的使用,如何创建新项目,如何调试,如果配置项目属性等等,另外还会介绍Visual C++ 2010中新加如的一些内容,包括一些新的STL组建,一些新的语法支持等等。 由于本人水平有限,其中难免有错误,希望大家谅解,如果大家有发现问题还请务必及时指出来,否则误导了他人我就罪不容恕了。 注意,本教程非C++教程,不会教你C++,只会教你如何使用 Visual C++ 2010去练习去学习其它C++教材上面的程序。因此建议大家认真的去看其他的 C++教程,在使用Visual C++ 2010实践的时候如果遇到问题可以到这里来参考。推荐《C++ Primer》、《C++程序设计语言》《Visual C++ 2008入门经典》。 第一章:关于Visual Studio、VC和C++的那些事 首先,这三个东西有什么区别呢?VC和C++是相同的吗,有什么区别呢?我刚开始学C++的时候也有这样的问题,在这里我来替大家解释一下他们到底是什么。

VS2008 安装顺序

VS2008 安装顺序: 01) Visual Studio 2008 (VS2008TeamSuite-CHS-X1429243.iso) 02) Team Explorer 2008 (VS2008TFS-CHS-X1429252.iso 源代码管理客户端) 03) Visual Studio 2008 SP1 (VS2008SP1-CHSX1512981.iso SP1补丁) 04) VS2008SP1-KB974558-x86 (针对Team Foundation Server 2010 的前向兼容更新) 在VS 2008上安装了VS SP1后,再启动Team Explorer会出现下面的错误:"Could not load type 'Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemTypeDeniedOrNotExistEx ception' from assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.” 。 答:造成这个错误一般是因为先安装了VS SP1再安装Team Explorer。解决很简单,再安装一遍VS SP1。 其他: VS2008九十天试用版本升级成正式版的办法: 升级正式版的方法是把Setupsetup.sdb文件中的[Product Key], 由T2CRQ-GDKBV-W7KJR-8C6CK-XMW3D修改为 PYHYP-WXB3B-B2CCM-V9DX9-VDY8T 或在控制面板中<添加/删除>,选VS2008,《更改》,升级。 因为九十天试用版本已经是RTM版本。所以改变序列号以后的升级或者安装,就会变成VS2008正式版。VS2008将不再有使用期限。

vs2008简单调试方法

VS2008简单调试方法 程序的错误通常可以分为若干类,语法错误,链接错误,逻辑错误。语法错误是比较容易查找并且修改的,而且编译给出的提示信息也比较完整,所以容易修改。链接错误来源很多,常常由于和系统、库函数等方面的原因出错,难以一言蔽之。最后是逻辑错误,也就是学生在实验课上碰到的难点,因为系统没有给出明确的提示,同学也只是知道运行错误,那么如何找到并修改运行错误就非常重要。下面以一个实例简单介绍一下调试过程,当然更加深入的还需自己多练习,学习。该文档所举例子为VS2008,同样适用于VS2005,VC++6。 1 一个实例 一个链表的程序,包括主程序Win32_C_Proj.cpp文件,Bucket.h和Bucket.cpp,其中Bucket用链表的方式实现一个容器。如下分别展示了main函数,bucket的插入元素函数和类的数据定义。

运行结果如下图 运行该程序,我们要的结果是1,2,因为是再第一位置插入1,第二位置插入2。而现在这个程序的输出结果却是2,1,和我们预想的不符合,说明程序设计过程中存在逻辑上的错误,也就是算法设计的问题。

2 初步发现问题 接下来第一步就是要发现问题。程序就那么几句,很明显,我们需要做的第一步就是确定错误的大至位置。 按F10运行程序,运行程序如下: 其中1位置是调试常有的工具按钮,2位置的箭头指示的是当前程序运行到的位置。工具按钮中八个按钮分别是: ●继续运行(F5,会运行到下一个断电停止,如果没有断点,则运行到结束)、 ●停止运行(不结束程序ctrl+shift+F5)、 ●结束运行(结束程序调试 shift+F5)、 ●重新启动、 ●显示下一个语句、 ●运行到函数内部(如果当前语句是一个函数)(F11) ●运行到同层的下一条语句(F10) ●跳出当前函数(shift+F11) 我们按F10,运行到bucket1.insertElem(2,2),这时候箭头指向该语句,表示该语句前面的语句都运行完成,但是该语句还未运行,显示的监视窗口如下:

VS2008经典教程与MFC编程示例

Visual Studio2008教程 Visual Studio2008发布后,有大量的https://www.wendangku.net/doc/0013770262.html,爱好者抛弃原来的Visual Studio2005平台转向现在流行的Visual Studio2008平台。但是Visual Studio2008有一个缺点就是需要比较高的硬件配置才能正常平稳的运行,所以到现在为止还有一部分人处于观望中,并没有转向这个平台。然而Visual Studio2008的一些新的功能以及优化性比先前版本有了很大的进步。本篇文章将主要介绍怎样利用https://www.wendangku.net/doc/0013770262.html,去编写一个计算器程序,程序虽然不复杂,但是其中所运用的知识和代码非常具有代表性,在平时开发中也是经常需要用到的。希望对https://www.wendangku.net/doc/0013770262.html,2008的初学者带来帮助。 打开 Visual Studio 2008。在文件 (File) 菜单上,单击新建项目 (New Project)。在新建项目 (New Project) 对话框的模板 (Templates) 窗格中,单击 Windows 应用程序(Windows Application)。单击确定 (OK)。 在Form1窗体中添加一个TextBox1控件和19个Button按钮,详细属性设置请查看以下的表格。 TextBox1 数据显 示框 Button1 0 Button2 . Button3 归零 Button4 无 Button5 = Button6 1 Button7 2 Button8 3 Button9 + Button10 - Button11 4 Button12 5 Button13 6 Button14 * Button15 / Button16 7 Button17 8 Button18 9 Button19 ON Button20 OFF 详细的界面请查看图1

Microsoft Visual Studio 2010 入门教程

《Visual C++ 2010入门教程》 写在前面 在我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有一本叫《Visual C++ 2005入门经典》的书帮了我不少的忙。因为通常的C++教材都只会介绍C++的语法什么的,很少会告诉我们如何去编译、运行,告诉我们什么是控制台程序,什么事Win程序,什么是GUI程序,C++能干什么,VC和C++的区别是什么。现在有很多的朋友应该也有这些问题吧? 学C++用C++也有几年了,算不上熟悉,算是初窥门径吧,我想我应该做点什么帮助一下那些和曾经的我一样困惑的朋友,特别是学生朋友,告诉他们他们所困惑的问题的答案。记得我学C++的时候,没有人教,有的时候也走了不少弯路,甚至连调试也不会,也不知道可以通过看调用堆栈看调用次序,还自己慢慢的去搜索,好傻啊。 接下来我会做一个《Visual C++ 2010入门教程》系列,用来帮助初学者。刚开始学的时候是很痛苦的,这个我深有体会,特别是身边还没有人能够指导一二的。内容主要涵盖在Windows下面使用C++进行开发的常见内容,Visual Studio 2010的使用,如何创建新项目,如何调试,如果配置项目属性等等,另外还会介绍Visual C++ 2010中新加如的一些内容,包括一些新的STL组建,一些新的语法支持等等。 由于本人水平有限,其中难免有错误,希望大家谅解,如果大家有发现问题还请务必及时指出来,否则误导了他人我就罪不容恕了。 注意,本教程非C++教程,不会教你C++,只会教你如何使用Visual C++ 2010去练习去学习其它C++教材上面的程序。因此建议大家认真的去看其他的C++教程,在使用Visual C++ 2010实践的时候如果遇到问题可以到这里来参考。推荐《C++ Primer》、《C++程序设计语言》《Visual C++ 2008入门经典》。 第一章:关于Visual Studio、VC和C++的那些事 首先,这三个东西有什么区别呢?VC和C++是相同的吗,有什么区别呢?我刚开始学C++的时候也有这样的问题,在这里我来替大家解释一下他们到底是什么。 Visual Studio,我们一般都简称为VS,VC全称是Visual C++,C++就不用解释了吧?Visual Studio其实是微软开发的一套工具集,它由各种各样的工具组成,这就好

visual c++ 2010入门教程

在我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本C ++的教材,有的适合我,有的不适合我,其中有一本叫《Visual C++ 2005入门经典》的书帮了我不少的忙。因为通常的C++教材都只会介绍C++的语法什么的,很少会告诉我们如何去编译、运行,告诉我们什么是控制台程序,什么事Win程序,什么是GUI程序,C++能干什么,VC和C++的区别是什么。现在有很多的朋友应该也有这些问题吧? 学C++用C++也有几年了,算不上熟悉,算是初窥门径吧,我想我应该做点什么帮助一下那些和曾经的我一样困惑的朋友,特别是学生朋友,告诉他们他们所困惑的问题的答案。记得我学C++的时候,没有人教,有的时候也走了不少弯路,甚至连调试也不会,也不知道可以通过看调用堆栈看调用次序,还自己慢慢的去搜索,好傻啊。 接下来我会做一个《Visual C++ 2010入门教程》系列,用来帮助初学者。刚开始学的时候是很痛苦的,这个我深有体会,特别是身边还没有人能够指导一二的。内容主要涵盖在Windows下面使用C++进行开发的常见内容,Visual Studio 2010的使用,如何创建新项目,如何调试,如果配置项目属性等等,另外还会介绍Visual C++ 2010中新加如的一些内容,包括一些新的STL组建,一些新的语法支持等等。 由于本人水平有限,其中难免有错误,希望大家谅解,如果大家有发现问题还请务必及时指出来,否则误导了他人我就罪不容恕了。 注意,本教程非C++教程,不会教你C++,只会教你如何使用Visual C++ 2010去练习去学习其它C++教材上面的程序。因此建议大家认真的去看其他的C++教程,在使用Visual C++ 2010实践的时候如果遇到问题可以到这里来参考。推荐《C++ Prim er》、《C++程序设计语言》《Visual C++ 2008入门经典》。 第一章关于Visual Studio、VC和C++的那些事 第二章安装、配置和首次使用VS2010 本章将帮助大家安装Visual C++ 2010,帮助大家做一些常见的配置,以及第一次使用它来写HelloWord程序。 安装

Visual Studio 2010系列之 与VS2008全面比较

Visual Studio 2010系列之与VS2008全面比较 在前面的一系列文章中,我们详细介绍了Visual Studio 2010 CTP的各种新特性,包括IDE的改进,语言层面(托管代码和非托管代码)的种种新特性等等。但是相信还是有很多朋友心存这样的疑问:任何新产品都会有很多新特性,为什么我要为了这些新特性而舍弃旧的Visual Studio 2008?(实际上她还很新,可以说才刚刚发布不久!)什么新特性是那“致命的诱惑”? 有道是“不怕不识货,就怕货比货”,下面我们就将Visual Studio 2010跟最新的Visual Studio 2008做一个重点的比较,让大家从比较中体会Visual Studio 2010的强大优势,让大家明白“10 is new 6”。 Vista才发布不久,微软就放出了下一代操作系统Windows 7的消息;Visual Studio 2008发布还不到一年,下一代开发工具Visual Studio 2010的CTP就出现了。刚刚发布就有下一代产品出现,从一个方面,这反映了技术的飞速发展,微软不得不不断推出新的产品以应对新技术的发展。但是,从另外一个侧面我们也可以解读出这样的信息:Vista以及基于Vista的Visual Studio 2008都不够成熟,都是一个“失败”的产品。如果说Vista是Windows 7的“Pre-Release”,相信大家都不会反对。同样的道理,从目前的情形来看,Visual Studio 2008更像是Vista平台上,Visual Studio 2010发布之前的一个过渡版本,同样扮演着Visual Studio 2010的“Pre-Release”的角色。 图1 一对难兄难弟:Vista + Visual Studio 2008 O(∩_∩)O 灵活高效的全新IDE 自从微软于1998年发布Visual Studio 6以来,Visual Studio的IDE已经成为软件开发工具的标杆,很多其他的开发工具,甚至是其他用途的应用程序,都在模仿Visual Studio的IDE。但是,就像我们前面讲过的那样,从Visual Studio 6到Visual Studio 2008,虽然IDE的功能越来越多,但是并没有什么革命性的变化,反倒因为功能太多带来了使用上的不便,导致开发效率低下。程序员们都在期盼一个全新的IDE的出现。 现在,程序员们的梦想在Visual Studio 2010中成为了现实。在Visual Studio 2010中,微软用全新的WPF技术重新打造了它的编辑器,借助WPF的强大功能,新的编辑器可以实现很多以前Visual Studio 2008的IDE根本无法想象的功能,比如代码的无级缩放,多窗口即时更新,文档地图,代码的自动产生等等,这些新的IDE特性都会极大地 提高程序员的开发效率。

vs2008单元测试入门

VS2008单元测试 调试是解决错误的过程,测试是发现软件缺陷的过程。每一个软件在交付使用时前都必须经过测试。软件测试是软件开发的重要组成部分,现在已经发展成专门的技术。 在消除了程序中的语法错误和运行错误后,程序仍然不能保证完全正确,程序员可以进行简单的单元测试,来确定基本功能是否完善,复杂的测试由专业人员进行。什么是单元测试呢? 单元测试是测试隔离的单元或模块,对各种方法分别使用不同的输入和执行参数来测试。单元测试的依据是详细设计描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。VS2008将单元测试工具集成在IDE中,方便程序员使用。 1.新建一个类库项目,并为其中的类添加一个方法,方法任意 创建单元测试。在方法名上右击,然后单击“创建单元测试”选项,打开“创建单元测试”对话框

选择方法 为新建项目命名

然后在解决方案管理中就多了相应的Test Project和一个叫Solution Items的解决方案文件夹。 相关的文件作用如下: localtestrun.testrunconfig 本地测试运行配置文件; MySchoolPro.vsmdi 测试管理文件; AuthoringTest.txt 提供创建测试的说明,包括向项目增加其他测试的说明;XXXXTest.cs 包含测试对象对应的测试方法,以及测试初始化和测试清除的方法. 修改输入参数,及对比参数,还可以设置判定方法的条件

打开测试菜单-》窗口-》测试试图 在测试试图,右键运行要测试的方法,在测试结果窗口中查看测试结果

用VS2008调试C语言的几点启示

用VS2008调试C语言的几点启示 C语言是计算机编程的入门语言。C语言的调试工具众多,但是功能都不够强大,而且和主流的操作系统(win7、win8)兼容度很差。VS2008是基于微软.NET框架下的一种主流集成开发环境,对于C语言来说,VS2008是一款优秀的调试工具。本文探讨了用VS2008调试C语言的方法步骤,同时指出了VS2008同其他几种C语言调试工具的区别和优势。 标签:C语言调试工具VS2008 开发环境 引言 C语言作为面向过程语言的代表,一直是广大程序员学习编程的入门语言。C语言结构清晰易懂,简洁紧凑。C 语言数据类型丰富,表达方式灵活实用;在众多的高级语言中,C语言能够直接访问物理地址,对硬件进行操作;C语言生成代码质量高,程序执行的效率也比较高;最后,C语言的语法和C#、Java等主流高级语言语法十分类似,可以作为学习这些高级语言的先行课。因此,C语言越来越受到广大计算机编程爱好者的欢迎,成为计算机编程的必学入门语言。 一、C语言调试工具 C语言的调试工具众多,以往比较流行的有Turbo C,现在几乎找不到单独的C编译器了。大多数情况下,C编译器捆绑在C的一个高级版本C++中。比如Borland C++、Dev-C++、Visual C++等等。Linux下则是GCC。随着.net框架的出现,绝大多数微软系统下的编译器都用了Visual studio,目前比较成熟的是Visual studio2008(简称VS2008)。VS2008是一个高度集成化的工具,主要用C#语言在上面进行软件开发。VS集成开发环境同时可用于编译C++和C程序。但是在编译C程序的时候有些不同,本文下面将讨论如何用VS2008编译C程序,同时指出同其他编译器的区别。 二、用VS2008调试C语言源代码的步骤 用VS2008编写C语言代码: 下面以一段最基本的C语言代码为例,说明如何用VS2008编写C语言代码。代码如下: #include main() {

vs操作说明

第一章关于Visual Studio、VC和C++的那些事 首先,这三个东西有什么区别呢?VC和C++是相同的吗,有什么区别呢?我刚开始学C++的时候也有这样的问题,在这里我来替大家解释一下他们到底是什么。 Visual Studio,我们一般都简称为VS,VC全称是Visual C++,C++就不用解释了吧?Visual Studio其实是微软开发的一套工具集,它由各种各样的工具组成,这就好像Office 2007是由Word 2007、Excel 2007、Access 2007等等组成的一个道理。其中Visual C++就是Visual Studio的一个重要的组成部分。Visual Studio可以用于生成Web应用程序,也可以生成桌面应用程序,在Visual Studio下面,除了VC,还有Visual C#,Visual Basic,过去还有Visual J#,现在还有Visual F#等等组件工具,使用这些工具你可以使用C++语言、C#语言或者Basic语言(微软改进版)进行开发。这就好比桌上放着刀、叉、筷子,你可以用它们来吃饭,无论你用什么工具都可以,因为它们都是餐具的一种。 VC,全称是Visual C++,它只是一个工具而已。 C++是一门和C、Basic、C#、Java一个概念的东西,它是一门语言,这个概念就同汉语、英语、法语之间的关系一样。语言的可以不同,他们有的复杂有的精简,比如汉语,我个人认为这是这个星球上最复杂的语言;又比如电影《阿凡达》中外星人使用的语言,不过100都个单词而已。当然,语言并没有高低贵贱之分,而对语言掌握的好不好,说的好不好是有高下之别的。 一个语言都有哪些要素呢?语法就是其中一个重要的方面,比如你要对你所喜欢的人表达爱慕之情,那么你应该说“我爱你”,你不能说“你爱我”,因为这搞错了主谓宾关系,因此我们通常都需要按照一定的规矩和原则表达才会让别人正确理解我们真正的含义。在我们的汉语中有一些成语,它们通常都比较简单短小,但是却能表达非常强烈的感情,而且效果非常好。比如你想骂一个坏人“你实在是太变态了,这种事情都干得出来。”你可以这样说:“你也太禽兽不如了!”对于编程的语言来说,其实也是有成语的,在我看来,这就是库函数。通常我们在编程的时候都推荐选择库函数,因为它通常会比较快一些。 一直以来都有不少人混淆Visual C++和Visual Studio,其实最初Visual C++发布的时候还没有Visual Studio这个东西,Visual C++是一个独立的开发工具,与Visual Basic等并列,最后微软将它们整合在一起组成了Visual Studio。 Visual C++从发布起到现在已经有10个大版本了,我们这里介绍的Visual C++ 2010就是Visual C++ 10,简称VC10。上朔10多年,Visual C++ 6.0发布了,这个被称为史上最经典的VC,现在有很多企业还在用它,大量的教材基于这个版本的VC来写的。然而实际上VC6并没有想象中的那么美好,孱弱的IDE,不完善的STL等等让它越来越不适应时代的发展,同时由于后来的版本和它的差别越来越大,让很多习惯于VC6教材的人在新版本上无所适从。VC6走向历史的终结点其实是必然的,只在于时间问题罢了,况且大部分人都有追求最新的“嗜好”,所以这里也选择最新版的VC来做入门教程。 下面来介绍下这个VC版本和VS版本的对应关系:

系统要求

系统要求 与SIMATIC 产品的兼容性 WinCC flexible SMART V3 SP2 与以下 SIMATIC 产品并行兼容: l STEP 7 V5.5 SP4l STEP 7 V5.6 l STEP7 (TIA Portal) V13 SP2l STEP7 (TIA Portal) V14 SP1l WinCC (TIA Portal) V13 SP2l WinCC (TIA Portal) V14 SP1l WinCC (TIA Portal) V15l WinCC flexible 2008 SP3l WinCC flexible 2008 SP5l WinCC flexible 2008 SP4 CHINA 系统要求 WinCC flexible SMART V3 SP2 针对以下操作系统发布: l Windows 10 Pro Version 1709 (OS Build 16299) 64-bit l Windows 10 Enterprise Version 1709 (OS Build 16299) 64-bit l Windows 10 Enterprise 2016 LTSB (OS Build 14393) 64-bit l Windows 10 loT Enterprise 2015 LTSB (OS Build 10240) (for IPCIPG) 64-bit l Windows 7 Professional SP l Windows 7 Enterprise SP 为了有效使用 WinCC flexible SMART V3 SP2 工作,请务必遵循这些推荐值。 同时在工程 PC 上打开WinCC flexible SMART V3 SP2 的多个实例,可能会导致更高的硬盘要求。 系统要求Windows 7/Windows 10 操作系统RAM 最小 1.5 GB,推荐 2 GB 处理器 最低要求 Pentium IV 或同等 1.6 GHz 的处理器,推荐使用 Core 2 Duo 图形 XGA 1024 x 768WXGA 用于笔记本16 位色深硬盘 空闲存储空间 最小 3 GB 如果 WinCC flexible SMART 未安装在系统分区中,则所需存储空间的分配如下: l 大约2.6 GB 分配到系统分区l 大约400 MB 分配到安装分区 例如,确保留出足够的剩余硬盘空间用于页面文件。更多信息,请查阅Windows 文档。 PDF 显示 使用最新版本的 Adobe Reader Page 1 of 1 系统要求

相关文档
相关文档 最新文档