_com_util::ConvertBSTRToString 转化出错

时间:2020-12-30 15:56:24
#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 个无法解析的外部命令

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

7 个解决方案

#1


>BSTR bstrValue = ::SysAllocString(L"程序员"); 
-----------------------
改成: BSTR bstrValue = ::SysAllocString("程序员");  试试, 好去掉 L 宏

#2


还是不行啊,,好像不是 宏的问题

#3


#pragma comment(lib, "comsuppw.lib")试试这个 lib库

#4


#include <comdef.h>

#5


char * buf = (char *)(_bstr_t)(bstrValue);

#6


项目属性
单击“C/C++”。 
单击“语言”属性页。 
修改“将 wchar_t 视为内置类型”属性改为 否(/Zc:wchar_t-)

#7


没错,加入就行了
#include   <comutil.h>
#pragma   comment(lib,   "comsuppw.lib ") 

#1


>BSTR bstrValue = ::SysAllocString(L"程序员"); 
-----------------------
改成: BSTR bstrValue = ::SysAllocString("程序员");  试试, 好去掉 L 宏

#2


还是不行啊,,好像不是 宏的问题

#3


#pragma comment(lib, "comsuppw.lib")试试这个 lib库

#4


#include <comdef.h>

#5


char * buf = (char *)(_bstr_t)(bstrValue);

#6


项目属性
单击“C/C++”。 
单击“语言”属性页。 
修改“将 wchar_t 视为内置类型”属性改为 否(/Zc:wchar_t-)

#7


没错,加入就行了
#include   <comutil.h>
#pragma   comment(lib,   "comsuppw.lib ")