• 记录VS2017使用遇到的一些问题


    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

  • 相关阅读:
    反转链表
    linux shell 读取配置文件的一个例子
    python 笔记碎片
    工作笔记整理
    linux服务器之间文件互传
    工作软件收集
    linux同步时间
    利用linux的df和du命令查看文件和目录的内存占用
    windows常用快捷键
    SUSE 12 安装 python3.6
  • 原文地址:https://www.cnblogs.com/lmst-ytt/p/13033303.html
Copyright © 2020-2023  润新知