首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

_com_util:ConvertBSTRToString 转化出错解决思路

2012-01-23 
_com_util::ConvertBSTRToString 转化出错#includecomutil.h#pragmacomment(lib,comsupp.lib )BSTRbst

_com_util::ConvertBSTRToString 转化出错
#include   <comutil.h>
#pragma   comment(lib,   "comsupp.lib ")


BSTR   bstrValue   =   ::SysAllocString(L "程序员 ");  
char   *   buf   =   _com_util::ConvertBSTRToString(bstrValue);  
SysFreeString(bstrValue);  
AfxMessageBox(buf);

------   已启动生成:   项目:   DLLTest,   配置:   Release   Win32   ------

正在编译...
DLLTestDlg.cpp
DLLTest.cpp
正在生成代码...
正在链接...
DLLTestDlg.obj   :   error   LNK2019:   无法解析的外部符号   "char   *   __stdcall   _com_util::ConvertBSTRToString(wchar_t   *) "   (?ConvertBSTRToString@_com_util@@YGPADPA_W@Z)   ,该符号在函数   "protected:   virtual   int   __thiscall   CDLLTestDlg::OnInitDialog(void) "   (?OnInitDialog@CDLLTestDlg@@MAEHXZ)   中被引用
Release/DLLTest.exe   :   fatal   error   LNK1120:   1   个无法解析的外部命令

为什么会出这样的连接错误??

[解决办法]
> BSTR bstrValue = ::SysAllocString(L "程序员 ");
-----------------------
改成: BSTR bstrValue = ::SysAllocString( "程序员 "); 试试, 好去掉 L 宏
[解决办法]
#pragma comment(lib, "comsuppw.lib ")试试这个 lib库

[解决办法]
#include <comdef.h>
[解决办法]
char * buf = (char *)(_bstr_t)(bstrValue);
[解决办法]
项目属性
单击“C/C++”。
单击“语言”属性页。
修改“将 wchar_t 视为内置类型”属性改为 否(/Zc:wchar_t-)

热点排行