与指向的类型无关;转换要求 reinterpret_cast、c 样式转换或函数样式转换

时间:2022-12-13 18:57:02

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就行了