所以我几天试图弄清楚为什么我的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项目。
答案 0 :(得分:0)
如果您为库创建项目时选择了基于MFC的库,则可以将任何版本的MFC添加为默认库。要删除它,请在项目属性中转到链接器>输入>忽略特定库并输入mfc40.lib。
有关该属性的更多信息:http://msdn.microsoft.com/en-us/library/3tz4da4a%28v=VS.90%29.aspx