栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

“2 个重载中没有一个可以转换所有参数类型” ;编译错误:“EasyX is only for C++”

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

“2 个重载中没有一个可以转换所有参数类型” ;编译错误:“EasyX is only for C++”

EasyX 报错
  • 错误原因
  • 解决方法

错误原因

今天在做C++图形库的时候,遇到了一个ERROR,在VC6上可以运行,但是移到了VS2017上就报错
错误 C2665 “loadimage”: 2 个重载中没有一个可以转换所有参数类型

错误原因:简单来说,这是由于字符编码问题引起的。

VC6 默认使用的 MBCS 编码,而 VC2008 及高版本 VC 默认使用的 Unicode 编码。以下详细解释这个问题:

用 char 表示字符时,英文占用一个字节,中文占用两个字节。这样有一个严重的问题:两个连续字节,究竟是两个英文字符,还是一个中文字符?为了解决这个问题,Unicode 编码诞生了。Unicode 编码不管中文英文都用两个字节表示。

解决方法
  • 选择“项目”菜单->项目属性->配置属性->常规->字符集,改为“未设置”即可。
  • 在图片名称前面加_T(“”)
    loadimage(&EBC_Picture, _T("liekong.jpg"), 1200, 675);
    
  • 在代码中取消 Unicode 编码的宏定义,让后续编译都以 MBCS 编码进行。
    方法很简单,只需要在代码文件的顶部增加以下代码:
    #undef UNICODE
    #undef _UNICODE
    
    这样就可以取消 Unicode 编码的宏定义,让整个项目以 MBCS 编码编译。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873188.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号