C++ 编译与运行时错误记录

1. 引言

在编译 C++ 代码时,我们经常会遇到各种编译错误。本博客旨在记录常见的编译错误,并提供对应的解决方案,以便快速查阅和参考。


2. 编译错误列表

2.1 C1128: 节数超过对象文件格式限制,请使用 /bigobj 进行编译

错误C1128

错误描述:

  • 该错误通常发生在对象文件的节数超出默认限制时,尤其是在使用大量模板代码或大型项目时。

解决方案:

2.1.1 启用 /bigobj 选项(推荐)
  • Visual Studio
    • 右键项目 -> 属性(Properties)
    • 进入 C/C++ -> 命令行(Command Line)
    • 其他选项(Additional Options) 中添加 /bigobj
    • 点击 应用(Apply)确定(OK)

解决C1128错误

  • CMake
    CMakeLists.txt 添加:

    add_compile_options(/bigobj)
    
  • MSBuild
    如果使用 MSBuild 命令行构建:

    msbuild your_project.sln /p:AdditionalOptions="/bigobj"
    
2.1.2 优化代码结构
  • 拆分超大的源文件,减少单个编译单元的体积。
  • 减少模板实例化,避免编译单元过大。
2.1.3 升级编译工具
  • 如果使用旧版 Visual Studio,尝试升级到 VS 2019/2022 以增强编译能力。

2.2 LNK110: 无法打开文件 “XXX.lib”

错误LNK110

错误描述:

该错误表示链接器无法找到或打开指定的 .lib 文件,通常发生在:

  • .lib 文件缺失或路径错误
  • 没有正确配置库目录
  • 目标平台和库不匹配(如 32 位 vs 64 位)

解决方案:

2.2.1 检查 .lib 文件是否存在
  • 进入项目设置中提到的路径 ./SDK/BIVisionPro/lib/x64/Release/,确保 BIVisionPro.lib 文件存在。
  • 如果文件缺失,需要重新编译或获取正确的 .lib 文件。
2.2.2 确认库目录是否正确配置
  • 右键项目 -> 属性(Properties)
  • 进入 配置属性 -> VC++ 目录(VC++ Directories)
  • 确保 库目录(Library Directories) 包含 .lib 文件所在路径
2.2.3 检查链接器输入项
  • 进入 配置属性 -> 链接器(Linker)-> 输入(Input)
  • 确保 附加依赖项(Additional Dependencies) 中包含 BIVisionPro.lib
2.2.4 检查架构匹配
  • 确保你的项目配置(如 x64)与 .lib 文件的架构一致。

例如:

  • 如果 .lib 文件是 64 位的,确保项目平台也是 x64
  • 如果 .lib 文件是 32 位的,项目也必须是 Win32

3. 运行时错误列表

3.1 找不到 XXX.dll,无法继续执行代码

应用程序无法找到或加载

错误描述:

该错误表示应用程序无法找到或加载 XXX.dll,导致无法继续执行代码。

可能原因:

  • XXX.dll 文件缺失或损坏。
  • 运行环境变量未正确配置,导致系统找不到 DLL。
  • DLL 依赖的其他库文件缺失。

解决方案:

3.1.1 检查 XXX.dll 是否存在
  • 在应用程序目录(或 C:/Windows/System32C:/Windows/SysWOW64)查找 XXX.dll
  • 如果文件缺失,尝试重新安装相关 SDK 或从备份恢复。
3.1.2 确保 DLL 目录在环境变量 PATH
  • 右键 此电脑 -> 属性 -> 高级系统设置 -> 环境变量
  • 系统变量 -> Path 中,确保 DLL 所在的目录已添加。
3.1.3 使用 Dependency Walker 检查 DLL 依赖项
3.1.4 注册 DLL(如果适用)
  • 以管理员身份运行命令提示符,执行:
    regsvr32 /s XXX.dll
    
  • 如果 XXX.dll 不是 COM 组件,则不需要注册。
3.1.5 重新安装相关运行时库
  • 重新安装 Visual C++ Redistributable Packages,确保 .dll 依赖项完整。
3.1.6 尝试在 SysWOW64System32 目录放置 DLL
  • 如果应用程序是 32 位,尝试将 XXX.dll 复制到 C:/Windows/SysWOW64/
  • 如果应用程序是 64 位,尝试复制到 C:/Windows/System32/

3.2 0xc000007b: 应用程序无法正常启动

0xc000007b运行错误

错误描述:

该错误通常发生在尝试运行一个应用程序时,表示程序无法正确加载所需的动态链接库(DLL)。

常见原因包括:

  • 32 位和 64 位库混用
  • 依赖的 DLL 缺失或损坏
  • Visual C++ 运行时环境不完整

解决方案:

3.2.1 检查应用程序的架构匹配
  • 确保你的应用程序和所有依赖项(DLL)都是相同架构的(例如,全是 x64 或全是 x86)。
  • 如果你的应用程序是 x64,但加载了 x86 的 DLL,则会导致 0xc000007b 错误。
3.2.2 使用 Dependency Walker 检查 DLL 依赖

这次的 0xc000007b 错误大概率是 BlVisionPro.dll 缺少依赖。如下图:

Dependencies 使用

3.2.3 重新安装 Visual C++ 运行时库
  • 根据你的 Visual Studio 版本下载并安装 Microsoft Visual C++ Redistributable Package
  • 通常,你需要安装适用于 x86x64 的版本。
  • 下载地址(适用于 VS 2015 及以上)。
3.2.4 确保 DirectX 相关组件正确安装
  • 一些应用程序依赖 DirectX 运行库,尝试重新安装 DirectX End-User Runtime
  • 下载地址
3.2.5 检查 Windows 更新
  • 确保你的 Windows 是最新的,某些系统更新可能修复此问题。
  • 设置 -> 更新和安全 -> Windows 更新 中检查更新。

结论

本博客将持续更新 C++ 编译和运行错误的收录,欢迎查阅并记录新的错误及解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值