Day2 编程就是搭积木

一、作业步骤

1.作业要求成功编译并打印价格,老师提供了两个文件。于是代码中加入下面两行。

#include "ConvertCurrency.h"

#pragma comment(lib, "ConvertCurrency.lib")

2.编译报错,提示无法打开文件“nafxcwd.lib”,使用everything没找到此文件。老师上课展示过代码,看到了CString,这是MFC里的。百度nafxcwd.lib,也发现属于MFC,于是安装MFC,成功后不再提示此错误。

 

3.继续编译,提示如下:

1>------ 已启动生成: 项目: CPrimerPlus, 配置: Debug Win32 ------

1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 MSVCRTD.lib(delete_scalar.obj) 中定义

1>LINK : warning LNK4098: 默认库“libcmtd.lib”与其他库的使用冲突;请使用 /NODEFAULTLIB:library

1>D:\MySource\Pix\Debug\CPrimerPlus.exe : fatal error LNK1169: 找到一个或多个多重定义的符号

1>已完成生成项目“CPrimerPlus.vcxproj”的操作 - 失败。

========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

4.百度已经在 MSVCRTD.lib(delete_scalar.obj) 中定义”,发现此文https://blog.csdn.net/CSDNCShuan/article/details/85342785

 

5.按文章所述,加入参数/verbose:lib

 

 

 

6,编译,部分输出如下:

1>------ 已启动生成: 项目: CPrimerPlus, 配置: Debug Win32 ------

1>main.cpp

1>

1>正在搜索库

1>    正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86\kernel32.lib:

1>    正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86\user32.lib:

1>    正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86\gdi32.lib:

1>    正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86\winspool.lib:

1>    正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86\comdlg32.lib:

1>    正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86\advapi32.lib:

1>    正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86\shell32.lib:

1>    正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86\ole32.lib:

1>    正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86\oleaut32.lib:

1>    正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86\uuid.lib:

1>    正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86\odbc32.lib:

1>    正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86\odbccp32.lib:

1>    正在搜索 ConvertCurrency.lib:

1>    正在搜索 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.24.28314\lib\x86\MSVCRTD.lib:

1>    正在搜索 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.24.28314\lib\x86\OLDNAMES.lib:

1>    正在搜索 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.24.28314\atlmfc\lib\x86\nafxcwd.lib:

1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 MSVCRTD.lib(delete_scalar.obj) 中定义

 

7.上一步输出的最后一行出现了错误,尝试忽略MSVCRTD.lib

 

 

8.继续编译,成功

1>------ 已启动生成: 项目: Lesson02, 配置: Debug Win32 ------

1>main.cpp

1>LINK : warning LNK4217: 符号“___acrt_iob_func”(在“ libucrtd.lib(_file.obj)”中定义)已由“main.obj”(函数“_printf”中)导入

1>LINK : warning LNK4217: 符号“___stdio_common_vfprintf”(在“ libucrtd.lib(output.obj)”中定义)已由“main.obj”(函数“__vfprintf_l”中)导入

1>ConvertCurrency.lib(ConvertCurrency.obj) : warning LNK4099: 未找到 PDB“ConvertCurrency.pdb”(使用“ConvertCurrency.lib(ConvertCurrency.obj)”或在“D:\MySource\Pix\Debug\ConvertCurrency.pdb”中寻找);正在链接对象,如同没有调试信息一样

1>Lesson02.vcxproj -> D:\MySource\Pix\Debug\Lesson02.exe

1>已完成生成项目“Lesson02.vcxproj”的操作。

========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========

 

 

 

 

二、番外

1.老师的解决方法安装4个,我只安装了前两个

 

 

2.老师的解决方法要求改这里,我保持默认的/MDd,没改

 

 

3.老师的解决方法要改这些,我只忽略了MSVCRTD.lib

 

猜你喜欢

转载自www.cnblogs.com/Nutshelln/p/12462140.html
今日推荐