100分!小弟我启用Unicode字符集之后,出现很多error LNK2019: unresolved external symbol,请教怎么办
100分!我启用Unicode字符集之后,出现很多error LNK2019: unresolved external symbol,请问怎么处理?
在把工程属性中的Character Set设成Use Unicode Character Set之前,所有的工程都能编译通过。
把所有的工程属性中Character Set设成Use Unicode Character Set之后,lib工程都能编过,桌面应用工程的exe都link出错,系统服务(Service)工程的exe却能正常编过。以上两者均用到lib。
lib是通过工程相关性(Dependense)的方式加入exe。
错误基本如下:(CLog是lib中的类)
LogItemView.obj : error LNK2019: unresolved external symbol "public: bool __thiscall CLog::LoadLog(wchar_t const *) " (?LoadLog@CLog@@QAE_NPB_W@Z) referenced in function "public: void __thiscall CLogItemView::Update(class CTask *) " (?Update@CLogItemView@@QAEXPAVCTask@@@Z)
RecoverItem.obj : error LNK2001: unresolved external symbol "public: bool __thiscall CLog::LoadLog(wchar_t const *) " (?LoadLog@CLog@@QAE_NPB_W@Z)
LogItemView.obj : error LNK2019: unresolved external symbol "public: class ATL::CStringT <wchar_t,class StrTraitMFC_DLL <wchar_t,class ATL::ChTraitsCRT <wchar_t> > > __thiscall CTask::GetLogFile(void) " (?GetLogFile@CTask@@QAE?AV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@XZ) referenced in function "public: void __thiscall CLogItemView::Update(class CTask *) " (?Update@CLogItemView@@QAEXPAVCTask@@@Z)
RecoverItem.obj : error LNK2001: unresolved external symbol "public: class ATL::CStringT <wchar_t,class StrTraitMFC_DLL <wchar_t,class ATL::ChTraitsCRT <wchar_t> > > __thiscall CTask::GetLogFile(void) " (?GetLogFile@CTask@@QAE?AV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@XZ)
基本上就是lib中自己类的函数,和CStringT两种,错误号2001 2019
------解决方案--------------------
你的lib是否也适用了unicode来编译啊?
------解决方案--------------------
编译选项也改成_UNICODE了?
------解决方案--------------------
你的另一个LIB库没有用UNICODE编译
在把工程属性中的Character Set设成Use Unicode Character Set之前,所有的工程都能编译通过。
把所有的工程属性中Character Set设成Use Unicode Character Set之后,lib工程都能编过,桌面应用工程的exe都link出错,系统服务(Service)工程的exe却能正常编过。以上两者均用到lib。
lib是通过工程相关性(Dependense)的方式加入exe。
错误基本如下:(CLog是lib中的类)
LogItemView.obj : error LNK2019: unresolved external symbol "public: bool __thiscall CLog::LoadLog(wchar_t const *) " (?LoadLog@CLog@@QAE_NPB_W@Z) referenced in function "public: void __thiscall CLogItemView::Update(class CTask *) " (?Update@CLogItemView@@QAEXPAVCTask@@@Z)
RecoverItem.obj : error LNK2001: unresolved external symbol "public: bool __thiscall CLog::LoadLog(wchar_t const *) " (?LoadLog@CLog@@QAE_NPB_W@Z)
LogItemView.obj : error LNK2019: unresolved external symbol "public: class ATL::CStringT <wchar_t,class StrTraitMFC_DLL <wchar_t,class ATL::ChTraitsCRT <wchar_t> > > __thiscall CTask::GetLogFile(void) " (?GetLogFile@CTask@@QAE?AV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@XZ) referenced in function "public: void __thiscall CLogItemView::Update(class CTask *) " (?Update@CLogItemView@@QAEXPAVCTask@@@Z)
RecoverItem.obj : error LNK2001: unresolved external symbol "public: class ATL::CStringT <wchar_t,class StrTraitMFC_DLL <wchar_t,class ATL::ChTraitsCRT <wchar_t> > > __thiscall CTask::GetLogFile(void) " (?GetLogFile@CTask@@QAE?AV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@XZ)
基本上就是lib中自己类的函数,和CStringT两种,错误号2001 2019
------解决方案--------------------
你的lib是否也适用了unicode来编译啊?
------解决方案--------------------
编译选项也改成_UNICODE了?
------解决方案--------------------
你的另一个LIB库没有用UNICODE编译