C++写的MFC(ANSI),之前好好地,后来再打开出现这个问题,很明显就是配置问题。
问题如下:
------ 已启动生成: 项目: winsocket, 配置: Debug Win32 ------
生成启动时间为 2016/10/21 9:41:41。
InitializeBuildStatus:
正在对“Debug\winsocket.unsuccessfulbuild”执行 Touch 任务。
ClCompile:
stdafx.cpp
winsocketDlg.cpp
c:\users\fu\documents\visual studio 2010\projects\winsocket\winsocket\winsocketdlg.cpp(191): error C2664: “CWnd::SetWindowTextW”: 不能将参数 1 从“const char [9]”转换为“LPCTSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\users\fu\documents\visual studio 2010\projects\winsocket\winsocket\winsocketdlg.cpp(196): error C2664: “void ATL::CStringT<BaseType,StringTraits>::Format(const unsigned short *,...)”: 不能将参数 1 从“const char [8]”转换为“const unsigned short *”
with
[
BaseType=wchar_t,
StringTraits=StrTraitMFC_DLL<wchar_t>
]
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\users\fu\documents\visual studio 2010\projects\winsocket\winsocket\winsocketdlg.cpp(225): error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [17]”转换为“LPCTSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\users\fu\documents\visual studio 2010\projects\winsocket\winsocket\winsocketdlg.cpp(230): error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [13]”转换为“LPCTSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\users\fu\documents\visual studio 2010\projects\winsocket\winsocket\winsocketdlg.cpp(252): error C2664: “inet_addr”: 不能将参数 1 从“CString”转换为“const char *”
没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
c:\users\fu\documents\visual studio 2010\projects\winsocket\winsocket\winsocketdlg.cpp(259): error C2440: “初始化”: 无法从“unsigned short *”转换为“char *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\users\fu\documents\visual studio 2010\projects\winsocket\winsocket\winsocketdlg.cpp(264): error C2664: “void ATL::CStringT<BaseType,StringTraits>::Format(const unsigned short *,...)”: 不能将参数 1 从“const char [18]”转换为“const unsigned short *”
with
[
BaseType=wchar_t,
StringTraits=StrTraitMFC_DLL<wchar_t>
]
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
winsocket.cpp
正在生成代码...
生成失败。
已用时间 00:00:04.32
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
解决方法:
我的是VS2010,其他仿照;
右键项目-》属性-》-配置属性-》c/c++-》预处理器-》预处理器定义:
把包含UNICODE的去掉,反正我是全删了;
如果行的话就可以了;
后来出现:c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(24): 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]
解决方法是:
右键项目-》属性-》-配置属性-》c/c++-》代码生成-》运行库;
修改为MT或者MTD就行了