我用 googleTest 制作了一个用于单元测试的新项目。然后我添加了另一个项目的源文件来测试它。然后我遇到了严重的链接器错误:
nafxcwd.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
我的项目中的关键选项是:
测试项目:
Runtime Library: Multithreaded Debug DLL (necessary for googleTest)
Use of MFC: Shared DLL
生产性项目:(这实际上应该不重要)
Runtime Library: Multithreaded Debug DLL
Use of MFC: Use MFC in a static library
即使我使用 MFC 作为共享 DLL 从生产项目中复制所有选项和文件,这些消息也会被抛出。
导入到测试项目的文件具有“stdafx.h”-include,该文件已解析为生产项目之一。 在那里,
#include <afxwin.h>
已包括在内。检查结果表明,对于共享 MFC-DLL,您需要
#define _AFXDLL
在您的项目中/之前 afxwin-include。否则你会得到这些错误。
要消除 VC++ 6 中的此链接器错误,请进入项目设置、常规并将 Microsoft 基础经典更改为在共享 dll 中使用 MFC。