为什么我的lib强制包含mfc40.lib?

时间:2011-10-21 15:00:41

标签: c++ mfc linker

所以我几天试图弄清楚为什么我的MFC项目在链接阶段失败,因为它无法找到mfc40.lib。我检查了#pragma comment,我检查了项目设置中的lib输入,我在文件夹后面的文件夹,我找不到。

就在我想要忘记之前,我意识到grepWin由于某种原因忽略了LIB文件,所以我在文本编辑器中打开了一个旧的lib并看到了:

  

-defaultlib:mfc40.lib -defaultlib:mfcs40.lib -defaultlib:msvcrt.lib -defaultlib:kernel32.lib -defaultlib:user32.lib -defaultlib:gdi32.lib -defaultlib:comdlg32.lib -defaultlib:winspool。 lib -defaultlib:advapi32.lib -defaultlib:shell32.lib -defaultlib:comctl32.lib / include:_ afxForceEXCLUDE / include: _afxForceUSRDLL / include:__ afxForceSTDAFX -defaultlib:LIBC   -defaultlib:OLDNAMES

由于一些奇怪的原因,上面的人类可读部分实际上是在LIB文件本身,所以我只能假设因为我直接链接到这个lib,它是间接强制包含mfc40.lib(和朋友)。

这是发生了什么事吗?为什么上面的LIB文件?解释为什么会发生这种情况将是一种奖励。

有问题的lib也来自Exchange SDK。我正在VS2008中编译这个MFC项目。

1 个答案:

答案 0 :(得分:0)

如果您为库创建项目时选择了基于MFC的库,则可以将任何版本的MFC添加为默认库。要删除它,请在项目属性中转到链接器>输入>忽略特定库并输入mfc40.lib。

有关该属性的更多信息:http://msdn.microsoft.com/en-us/library/3tz4da4a%28v=VS.90%29.aspx