error LNK2001: 无法解析的外部符号 "__declspec(dllimport)

OperationScaleSceneOverall2D.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: static class DataObject * __cdecl DataObject::GetObjectW(unsigned int)" (__imp_?GetObjectW@DataObject@@SAPEAV1@I@Z)
1>OperationSetMaterial.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: static class DataObject * __cdecl DataObject::GetObjectW(unsigned int)" (__imp_?GetObjectW@DataObject@@SAPEAV1@I@Z)

1>HouseRenderOptix.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) int __cdecl SaveFileBMP(class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >,unsigned char *,int,int,int)" (__imp_?SaveFileBMP@@YAHV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@PEAEHHH@Z),该符号在函数 "public: void __cdecl HouseRenderOptix::OutputBMP(class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >)" (?OutputBMP@HouseRenderOptix@@QEAAXV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z) 中被引用


error LNK2001:无法解析的外部符号真的是一个非常头疼的问题;因为问题各种各样,我把这个LNK2001的解决方法贴出来供大家分享,可能不适用于所有的LNK2001,希望对大家有帮助。

我这个LNK2001报的错误是同一个项目下的另一个工程.obj有错误,这里显示的是GetObjectW的问题,而事实上我另一个工程生成的.obj文件里是GetObjectA。注意到GetObjectW和GetObjectA只有最后一个字符不同,一个是W,另一个是A。W代表宽字符,A代表ASCII码。说明问题出在字符设置上。查看一下,果然,两个工程的生成字符集不同

两个工程生成字符集一个是“未设置”另一个是“使用 Unicode 字符集”,引发LNK2001的错误。同一个项目下的不同工程字符集应该是设为一样的。有相同问题的朋友,希望能对你有帮助。

你可能感兴趣的:(C++,mfc,字符集,LNK2001)