Error LNK2019: unresolved external symbol "char * __stdcall _com_util::ConvertBSTRToString(wchar_t *)"

时间:2021-01-02 14:33:42
Error 2 error LNK2019: unresolved external symbol "char * __stdcall _com_util::ConvertBSTRToString(wchar_t *)" (?ConvertBSTRToString@_com_util@@YGPADPA_W@Z) referenced in function "public: char const * __thiscall _bstr_t::Data_t::GetString(void)const " (?GetString@Data_t@_bstr_t@@QBEPBDXZ) main.obj CPUTest

I met this error when programming a WMI C++ query application.

Research:
MSDN
Says :When calling a function in a static library or DLL that takes a
wchar_t type (note that BSTR and LPWSTR resolve to wchar_t*), you may
get an LNK2001 unresolved external symbol error.This error is caused by
the /Zc:wchar_t compiler option, which is set to on by default in new
MFC projects. This option causes the compiler to treat wchar_t as a
native type. Before Visual C++ .NET, wchar_t was treated as an unsigned
short.If the main project and library do not use the same setting for
/Zc:wchar_t, this will cause a mismatch of function signatures. To avoid
this problem, rebuild the library with the /Zc:wchar_t compiler option,
or turn it off in the main project using the Treat wchar_t as Built-in
Type setting on the Language property page in the Property Pages dialog
box.

Solution:
Add this:
#ifdef _DEBUG
# pragma comment(lib, "comsuppwd.lib")
#else
# pragma comment(lib, "comsuppw.lib")
#endif
# pragma comment(lib, "wbemuuid.lib")

Reference:
ConvertStringToBSTR
http://msdn.microsoft.com/en-us/library/t58y75c0.aspx

Posted by

vrbear

at

16:29

Labels:
SDK,
WMI
 
http://vrbear.blogspot.jp/2008/09/error-lnk2019-unresolved-external.html