VS编译错误官网解释: https://docs.microsoft.com/zh-cn/cpp/error-messages/tool-errors/linker-tools-error-lnk1104?view=vs-2019
问题1: vs2017,安装错误:找不到与以下参数匹配的产品
找不到与以下参数匹配的产品:
channelId: VisualStudio.15.Release
productId: Microsoft.VisualStudio.Product.Community
解决方法:
第一步:删除隐藏文件夹(担心删掉会有不良影响的可以直接改Packages这个文件夹的名字):
C:ProgramDataMicrosoftVisualStudioPackages
第二步:运行:
C:Program Files (x86)Microsoft Visual StudioInstaller
esourcesapplayoutInstallCleanup.exe -i
第三步:找到C:Program Files (x86)Microsoft Visual StudioInstallervs_installershell.exe,以管理员权限运行,重新安装一次。
问题2: VS 2017 工具问题"本次安装Visual Studio 所用的安装程序不完整"
解决方法:
找到C:Program Files (x86)Microsoft Visual StudioInstallervs_installershell.exe,以管理员权限运行,重新安装一次。安装不成功的参照问题1来解决。
问题3: VS 2017单独增加某个组件
解决方法:依次点击下面菜单项
工具-》获取工具和功能-》单个组件-》选择你少的组件就行了
问题4: VS 2017单独增加windows的SDK包
解决方法:同问题3,依次点击下面菜单项
工具-》获取工具和功能-》单个组件-》选择你少的组件就行了
问题5:如何安装vsix扩展工具
解决方法:1.找到安装时VSIXInstaller.exe所在目录,默认目录在C:Program Files (x86)Microsoft Visual Studio 14.0Common7IDEVSIXInstaller.exe
2.cmd命令窗口切换到 这个路径下,然后将你要安装的vsix文件拖到dos窗口里,这样就有vsix文件的路径了.
3.回车就可以进行安装了,安装安装完成后重启VS。
问题6:VS2017编译--错误: 未能完成操作。未指定的错误
解决方法:1.将编译报错的工程卸载后再加载。
问题7:VS2017数据断点为灰色不能设置的原因:
解决方法:
1.数据断点只能在break mode下使用,也就是说首先得设置一个普通的断点进入debug break之后才能启用数据断点功能。
2.数据断点只能对Native Code使用,调试时只能选择Native Code,不能带有Managed Code(托管代码)。远程调试就只能勾选Native Code这一项。本地调试选自动或者非托管。
3.C++/C#混合工程时,需要将C#工程属性:general->Common Language Runtime support 的值修改成 No Common Language Runtime support。(如果想在C++/C的工程中调用C#的库的话需要将启动工程的属性设置为:Common Language Runtime support,因此在混合工程中,需要注意此处属性的切换)
问题8:Release 版本用作调试时,需要对项目属性做以下设置
1.配置C/C++ >General>Debug Information Format 应该为 “Program Database(/Zi)”
2.配置C/C++ >Optimization>Optimization 应该为”Disabld(/Od)”
3.配置Linker>Debugging>Generate Debug Info 应该为”Yes/(DEBUG)”
问题9:error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1600”不匹配值“1900”
宏 _MSC_VER :表明了当前项目的编译器的主版本
对应vs版本:_MSC_VER
问题原因:在编译过程中,由 Visual Studio 2010 的编译器编译出来的静态链接库文件 xxx.lib 放到了当前的 Visual Studio 2017 的编译器中与当前项目一起编译.
解决方案有如下两个:
1.找指示编译器对应的编译平台进行编译:比如这里 _MSC_VER 为 1600,对应了 Visual Studio 2010,这是将当前项目与静态链接库的编译器版本进行统一的方法
2.使用你当前使用的 VS 对应的编译器重新编译出错的静态链接库:比如这里我只需要重新编译 xxx.lib(使用 VS2017 的编译器)即可
问题10:LINK : fatal error C1007: 无法识别的标志“-FitObjData”(在“p2”中)
问题原因:使用lib的时候,lib库的编译“平台工具集”与当前工程的编译平台不一致导致。类似问题9的原因。
解决方案:lib库和当前工程使用相同vs版本编译。
问题11:error MIDL2025/2026
问题原因:项目中的.idl文件编译配置有问题。使用了新版本的windows SDK头文件,而使用旧版本的MIDL
工具来编译所导致。
解决方法:idl文件-->右键"属性"-->"MIDL"-->"常规"
Tools > Options > Projects and Solutions > VC++ Directories > Executable Files
里添加这个SDK的BIN目录,这样就使用新版本的MIDL编译工具
问题12:RC2135:file not found:xxx.lib/xxx.tlb
问题原因:Rc文件中引用了lib文件/tlb文件,但是项目中资源配置中没有配置文件所在路径。
解决方法:项目-->右键"属性"-->"资源"-->“常规”-->附加包含目录。
问题13:错误FTK1013:找不到Unicode字节顺序标记
解决方法:查看磁盘空间是否满了,如果满了清理磁盘后重新编译。
问题14:错误 C2857:在源文件中找不到用/Ycfilename命令行选项指定的 "#include" 语句
问题原因:/Yc选项指定不包含在要编译的源文件中的包含文件的名称,报错是因为找不到对应的pch文件。
解决方法:是否需要使用预编译头文件,如果不需要使用,则在项目-->右键"属性"-->C/C++-->"预编译头" 删除掉配置项指定的文件;
如果需要使用预编译头文件,则参考使用方法:https://docs.microsoft.com/zh-cn/cpp/error-messages/compiler-errors-2/compiler-error-c2857?view=vs-2019
问题15:error LNK2005: _DllMain@12 已经在 *****.obj 中定义 错误
解决方法:
项目-- 属性 -- c/c++ -- 预处理器 -- 将预处理定义中的_USRDLL 删除即可
问题16:fatal error LNK1104:无法打开文件kernel32.lib的解决方法
解决方法:打开项目属性->配置属性->VC++目录->库目录
然后添加路径 C:Program Files (x86)Microsoft SDKsWindowsv7.1ALib (这里以windowsSDK 7.1为例)
问题17:fatal error LNK2020:
问题原因:托管类型代码中,只有声明没有定义导致。类似于未定义的外部错误,只不过引用是通过元数据的。 在元数据中,必须定义所有函数和数据。
解决方法:(https://docs.microsoft.com/zh-cn/cpp/error-messages/tool-errors/linker-tools-error-lnk2020?view=vs-2019)
-
定义缺少的函数或数据,或
-
包含已在其中定义缺少的函数或数据的对象文件或库。(很容易忽视cpp没包含到项目中的情况)
问题17:fatal error LNK1561: 必须定义入口点
每个应用程序(文件格式为exe)都应该有个启动点,这个点就是main函数。缺少就会出现link error 。
解决方法有两个:
1.添加含有main函数的CPP文件
2 右击属性,在常规项中修改配置类型,将应用程序修改为库,动静态库
问题18:fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
问题原因:
1.编译环境不具备X64编译能力;
2.链接的lib库与当前编译的工程不匹配,例如编译64位时链接的lib是32位;
问题19:error C1189: #error : Please use the /MD switch for _AFXDLL builds
1.在将"运行库"设置为MT的同时,”属性页->配置属性->常规->MFC的使用”改为”在静态库中使用MFC”;
或者
2.在将"运行库"设置为”多线程DLL(/MD)”,”属性页->配置属性->常规->MFC的使用”设置为”在共享DLL中使用MFC”。
注:(/MD)和(/MT)是编译Release版本用的,(/MDd)和(/MTd)是编译Debug版本用的
问题20:error LNK1102 内存不足
解决方案:
1.清理工程,删掉该工程之前生成的.pdb、.lib、.dll,然后重新编译,未能解决再按照步骤2来处理。
2. 微软官网解决方法:https://docs.microsoft.com/zh-cn/troubleshoot/visualstudio/general/linker-fatal-error-out-of-memory