环境:win7,x64,vs2008 sp1

把VC 6.0的工程文件用VS2008打开,编译报错: error C2664:“_com_util::ConvertBSTRToString”: 不能将参数 1从“String”转换为“BSTR”;

出错的程序代码是这句:

char*Filename=_com_util::ConvertBSTRToString(filename);

这代码是以前在VC 6.0里写的。VC 6.0里的默认的内置字符集是ANSI.

而上面的一段代码里的filename是一个定义的类型变量:String filename;

String 的定义是:typedef unsigned short* String;

BSTR 在VC6.0里是typedef unsigned short*,而在VS2008里却是wchar_t*,wchar_t是一个 16-bit UNICODE character;

注意COM编程里面只支持wchar_t即unicode编码形式。虽然上面的unsined short与wchar_t都是16位的,但是不同编码之间是不兼容的。ANSI以8bit来表示一个字符,而unicode以16bit来表示一个字符。如果我们的内存单元是8位来单位的,比如一个字符串“abc",用ANSI来表示就占用四个存储单元,而用UNICODE来表示就占用8个存储单元。很显然这两种编码是兼容的。我们想像一下内存模型就知道。

解决:

英:Setting of the project in "C/C++ -> Language -> Treat wchar_t as Built-In Type" to "No" (originally it was: "Yes(/Zc:wchar_t)".

汉:在VS2008里:项目->属性->配置属性->C/C++->语言;把wchar_t视为内置类型改为否即可。

转自:http://blog.sina.com.cn/s/blog_5ed3e6210100ff7m.html

参考:http://blog.csdn.net/li_hai/article/details/100326

转载于:https://www.cnblogs.com/huty/p/8518742.html

【VS开发】ConvertBSTRToString(filename) 不能将string转换为BSTR相关推荐

  1. 如何将std :: string转换为const char *或char *?

    如何将<code>std::string转换为char*或const char* ? #1楼 看看这个: string str1("stackoverflow"); c ...

  2. string转换为bigdecimal_java如何将String转换为Int

    Java 必知必会 第 1 篇(精挑 Stack Overflow在java中排名前100的问题懂得这些问题的答案帮你解决80%开发问题 )问题: java如何将String转换为Int    答案: ...

  3. C++ std::string 转换为 UTF-8 编码

    在一次项目工程开发中,需要部署端(C++)向云端(Java)发送 HTTP  POST 请求,但是在云端接受参数时出现乱码现象,故在部署端发送请求时,对请求参数进行一次 UTF-8 转码. // st ...

  4. 如何在Java中将String转换为int?

    如何在Java中将String转换为int ? 我的字符串仅包含数字,我想返回它代表的数字. 例如,给定字符串"1234" ,结果应为数字1234 . #1楼 好吧,要考虑的一个非 ...

  5. JAVA 利用SimpleDateFormat将String转换为格式化的日期

    1. /*** 使用用户格式提取字符串日期** @param strDate 日期字符串* @param pattern 日期格式* @return*/public static Date parse ...

  6. string转换为bigdecimal_SO面试题09:如何将String转换为Int?

    # 问题 如何将String转换为int? 我的字符串仅仅包含数字,我想把它返回成一个整数类型. 例如,给你一个字符串 "1234",返回的应该是整型 1234. # 最佳答案 先 ...

  7. openresty开发系列18--lua的字符串string操作

    openresty开发系列18--lua的字符串string操作 string的相关操作 1)string.upper(s) 接收一个字符串 s,返回一个把所有小写字母变成大写字母的字符串. prin ...

  8. 如何在Java中将String转换为int

    在本教程中,我们将看到将Java中的String转换为int(或Integer)的各种方法. 您可以使用以下任何一种方式: –使用Integer.parseInt(string) –使用Integer ...

  9. byte转换为string乱码_Python如何将String转换为int ?

    在Python中,我们可以使用int()将String转换为int. # String num1 = "88"  # 'str'> print(type(num1))  #  ...

  10. Java char转换为String,String转换为char数组

    Today we will look into java char to String program. We will also learn how to convert String to a c ...

最新文章

  1. [BZOJ4448][SCOI2015]情报传递[dfs序+树状数组]
  2. 装车机器人_智造春天脚步近 青岛这家机器人公司着手打造模块化、标准化技术平台...
  3. python调用opengl_Python运行OpenGL示例
  4. 坦克大战系列6-API常用函数说明2
  5. Leetcode: Divide Two Integers
  6. PYTHON之路(八)
  7. MySQL主从、主主、半同步节点架构的的原理及实验总结
  8. 浪潮通信收入_浪潮获2019大数据“星河(Galaxy)”奖
  9. putty秘钥转换成xhell支持的格式
  10. Ubuntu16.04安装Hadoop2.7.3教程
  11. 移动开发者必须了解的10大跨平台工具
  12. PS(Photoshop)去水印的4个方法
  13. 2020 年 Github 上最牛的 Java 进阶教程及 Java 实战项目都在这里了!
  14. Java面试题精选四(oracle、mysql数据库)
  15. 关于 Google Play 商店下载应用一直处于“等待中”的问题
  16. 初中数学抽象教学的案例_新课标下初中数学问题情景教学案例和思考
  17. 学校计算机一级上网题,考试经验之谈:计算机一级考试上网题怎么操作?
  18. excel 两日期相减
  19. 2021最新.NET/C#面试汇总:《.NET/C#面试手册》
  20. EMC测试仪器_如何实现EMC的测试工作?

热门文章

  1. sap gui java_不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧
  2. redis copy-on-write机制
  3. 无法启动此程序 因为计算机中丢失 msvcp71.dll,msvcp71.dll丢失怎样修复?计算机中丢失msvcp71.dll文件的解决方法...
  4. exists sql用法_《SQL进阶教程》笔记(3)
  5. MyBatis集合Spring(二)之SqlSession
  6. 【渝粤教育】国家开放大学2018年秋季 0529-21T高级英语阅读(1) 参考试题
  7. 【Python实例第33讲】单变量特征选择
  8. VC++学习方法及书籍推荐(转)
  9. 解读【ICLR2020】多伦多大学:基于策略网络的探索模型规划
  10. Qt 学习之路 2(3):Hello, world! 笔记