Visual C++ 2005使用入门

本文详细介绍了如何使用Visual Studio 2005进行多种类型的程序开发,包括Win32控制台应用、CLR控制台应用、MFC Windows应用及传统SDK编程。针对不同应用场景提供了具体的步骤指导和代码示例,并解决了常见的编译问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能强大的Visual studio 2005 IDE庞大的开发环境和N多的配置设置,学习起来还不是很简单。C++/CLI通过对ISO C++ 标准的纯粹扩展和新语法,不像传统的MS-DOS 控制台程序,所以对于新手,首先应弄明白怎样在Visual studio 2005开发环境下编译常规控制台应用程序及Windows应用程序。

1)win32控制台应用程序

文件à新建à项目à Visual C++àwin32àwin32控制台应用程序à控制台应用程序à预编译头à完成à新建win32.cpp

<1>Basic IO Program

// winconsole.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include <iostream> using std::cin; using std::cout; int _tmain(int argc, _TCHAR* argv[]) { cout<<"Hello World./n"; return 0; }

<2> 托换代码和非托管代码混合编程

// managed.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #using <mscorlib.dll> // 为了使用Console::WriteLine方法 #include <stdio.h> // 为了使用printf using namespace System; // 声明非托管代码 #pragma unmanaged void print(char *msg) { printf("%s/n", msg); } // 切换回托换代码 #pragma managed int _tmain(int argc, _TCHAR* argv[]) { // 调用托管的方法输出到控制台 Console::WriteLine(L"Hello world from managed method"); // 使用标准输出 print("hello world from unmanaged method"); return 0; }

注意:需要设置CLR支持:项目属性à配置属性à常规à公共语言运行库支持à公共语言运行库支持/clr

我们观察配置属性à常规à多字节字符集/Unicode字符集,这一选项默认为“Unicode字符集。在vs2005以前版本的vs默认使用多字节字符集,而vs2005默认使用unicode字符集,这会使一些代码不能编译通过。这里我们要弄清楚从main_tmain和从char*_TCHAR*的问题。

Visual Studio 7开始,Microsoft引入了所谓的一般文本例程映射。TCHAR.H中定义的是映射到多字节字符集(MBCS)、单字节字符集 (SBCS)和Unicode模型的宏或内联函数。这些映射处理那些表示为单字节ANSI ASCII或者双字节Unicode编码的字符数据。

如果正在遵从Unicode算法,则要确定把所有的main()函数改为_tmain(),并把字符指针从char*改为_TCHAR*。关于Windows编码问题将会经常遇到,大家可以网上查阅相关资料。

参考:《从char/wchar_t到TCHAR

2)CLR控制台应用程序

文件à新建à项目à Visual C++àCLRàCLR控制台应用程序à打开左侧解决方案资源管理器中的源文件à右击à添加新项à建立.cpp

注意: 项目属性à配置属性à常规à公共语言运行库支持à公共语言运行库支持/clr

// clrconsole.cpp: 主项目文件。 #include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { Console::WriteLine(L"Hello World from CLR console application."); return 0; }

3)MFC编写windows控制台应用程序

文件à新建à项目àVisual C++àwin32àwin32控制台应用程序à控制台应用程序à空项目

#include <afx.h> // 必需 #include <afxwin.h> // 必需 #include <iostream> using std::cout; using std::endl; CWinApp theApp; // 创建应用程序实例 int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) // 入口函数 { int nRetCode = 0; if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0) // 由于没有调用MFC提供的WinMain函数,所以在此AfxWinInit进行初始化 ) { nRetCode = 1; } else { CString strHello("Hello World from MFC winconsole platform"); // MFC类CString定义一个字符串对象 AfxMessageBox(strHello); char *strHelloT = "Hello World from win32 console platform"; cout << strHelloT << endl; } return nRetCode; }

编译出错:fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

解决方法:项目属性à配置属性à常规àMFC的使用à在共享DLL中使用MFC或在静态中使用MFC

4)利用vc++2005 进行传统SDK编程

参考:《Windows编程之从控制台到SDK窗口

编译出错:找不到msvcr80d.dllmfc80d.dll文件

解决方法"属性à配置属性à清单工具à常规"下有一个"使用FAT32解决办法,把它选成,再重新生成解决方案(重新编译)!(注意:一定要先配置这个选项,然后再编译工程,要不然还是不好用)

5)利用MFC类库开发Windows 应用程序

参考:Windows编程之MFC窗口程序浅析

注意:项目属性à配置属性à常规àMFC的使用à在共享DLL中使用MFC或在静态中使用MFC

编译错误error C2664: 'CFrameWnd::Create' : cannot convert parameter 2 from 'const char [9]' to 'LPCTSTR';Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

解决方法:项目属性à配置属性à常规à字符集à多字节字符集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值