#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 宏
-----------------------
改成: 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-)
单击“C/C++”。
单击“语言”属性页。
修改“将 wchar_t 视为内置类型”属性改为 否(/Zc:wchar_t-)
#7
没错,加入就行了
#include <comutil.h>
#pragma comment(lib, "comsuppw.lib ")
#include <comutil.h>
#pragma comment(lib, "comsuppw.lib ")
#1
>BSTR bstrValue = ::SysAllocString(L"程序员");
-----------------------
改成: 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-)
单击“C/C++”。
单击“语言”属性页。
修改“将 wchar_t 视为内置类型”属性改为 否(/Zc:wchar_t-)
#7
没错,加入就行了
#include <comutil.h>
#pragma comment(lib, "comsuppw.lib ")
#include <comutil.h>
#pragma comment(lib, "comsuppw.lib ")