在编写刻录机控制程序的过程中,调用到的com组件的方法返回了很多BSTR类型的数据。直接输出到控制台,发现只是将变量的内存地址打印了出来。一番搜索,网上有很多转换的方法。但是试来试去总是会报错误,错误如下:
 

 
  
  1. 错误  1   error LNK2019: 无法解析的外部符号 "char * __stdcall _com_util::ConvertBSTRToString(wchar_t *)" (?ConvertBSTRToString@_com_util@@YGPADPA_W@Z),该符号在函数 _main 中被引用   E:\work\code\project\cpp\cpptrain\cpptrain\cpptrain\train.obj   cpptrain  

按照那些对BSTR类型做转换的文章所述,需要引入comutil.h这个头文件,并且链接入comsupp.lib。这些我都做了,如下:

 
  
  1. #include "comutil.h"  
  2. #pragma comment(lib, "comsupp.lib") 

可是依然报错,按照错误查找才发现,需要修改vs的设置,将WChar_t视为内置内省,修改为否,至于原因为何,本人C++水平处于起步阶段暂时无法赘述,如下: