当前位置: 首页 > news >正文

关于TensorRT的若干报错问题

  • 问题一
unsigned int worst_score = std::numeric_limits<unsigned int>::max();严重性	代码	说明	项目	文件	行	禁止显示状态
错误	C2589	“(:::”右边的非法标记	EngineInforence1	D:\OpenCV\opencv346\build\include\opencv2\flann\lsh_index.h	204	

解决办法

UniqueResultSet() :is_full_(false), worst_distance_((std::numeric_limits<DistanceType>::max)()) // <-- 注意 max() 外的括号
{
}
  • 问题 2
error:“ACCESS_MASK”: 不明确的符号

解决办法

注释掉所有的命名空间 如using namespce cv, using namespce std; 
  • 问题3
 `C2589: "(":"::"右边的非法标记` 表明在预处理阶段,代码 `std::max(...)` 被意外修改了,导致语法不正确。

为什么 std::max 仍然不行?

  1. NOMINMAX 未定义或定义太晚: 你可能没有在包含 windows.h 之前定义 NOMINMAX,或者定义的位置不对,导致 max 宏仍然被定义。
  2. 其他库定义了 max 宏: 可能有其他第三方库也定义了 max 宏。
  3. 项目范围的宏定义: max 可能在项目设置中被强制定义了。

解决方法:

  1. (强烈推荐)确保 NOMINMAX 正确且及时定义:

    • 这是最根本的解决方案。你需要确保在 任何 可能包含定义 max/min 宏的头文件(尤其是 windows.h)之前,定义 NOMINMAX
    • 最佳实践是在项目属性中全局定义它:
      • 在 Visual Studio 中,右键点击你的项目 EngineInforence1 -> 属性 (Properties)。
      • 转到 配置属性 (Configuration Properties) -> C/C++ -> 预处理器 (Preprocessor)
      • 预处理器定义 (Preprocessor Definitions) 中添加 NOMINMAX。也建议同时添加 WIN32_LEAN_AND_MEAN
      • 确保这对所有配置(Debug/Release)和平台(x86/x64)都应用了。
    • 如果不能修改项目属性,或者需要在特定文件中处理:
      • 找到包含 lsh_table.h.cpp 文件。
      • 在该 .cpp 文件的最顶部(在任何 #include 之前)添加:
        #define NOMINMAX
        #define WIN32_LEAN_AND_MEAN
        // 然后包含其他头文件
        #include <windows.h> // 如果需要
        #include <opencv2/.../lsh_table.h>
        // ... 其他 includes ...
        
  2. (替代方案)使用括号包围 std::max

    • 即使定义了 NOMINMAX,如果因为某些原因 max 宏仍然存在(例如在某个特定上下文中被重新定义),这个方法也能提供额外的保护。
    • 修改 lsh_table.h 第 301 行的代码:
      // 原代码
      // if (((std::max(buckets_space_.size(), buckets_speed_.size()) * CHAR_BIT * 3 * sizeof(BucketKey)) / 10
      //      >= (size_t(1) << key_size_)) || (key_size_ <= 32)) {// 修改后,注意 std::max 外的括号
      if (((std::max)(buckets_space_.size(), buckets_speed_.size()) * CHAR_BIT * 3 * sizeof(BucketKey)) / 10>= (size_t(1) << key_size_)) || (key_size_ <= 32)) {// ... rest of the code ...
      }
      
    • std::max 外的括号 () 阻止了宏替换,明确告诉编译器这是一个函数调用。
http://www.dtcms.com/a/323189.html

相关文章:

  • [Oracle] TRUNC()函数
  • W25Q64中跨页写入数据
  • 总结-ArrayList的扩容机制和BigDecimal大数的底层
  • 机器学习DBSCAN密度聚类
  • 如何更改win11自带录音机所录制文件的存储路径
  • 禁用 WordPress 更新提示(核心、插件、主题)
  • 【重建技巧】Urban Scene Reconstruction-LoD细节提升
  • springBoot集成easyExcel 实现文件上传
  • WinForm 中 ListView 控件的实战应用与功能拓展
  • 集成电路学习:什么是RViz机器人可视化工具
  • Java 时间和空间复杂度
  • 徘徊识别场景误报率↓77%:陌讯动态时序建模方案实战解析
  • 二叉搜索树的C语言实现
  • 《软件测试与质量控制》实验报告五 功能自动化测试
  • 掌握数据可视化:全局配置项详解
  • Java进阶之单列集合List接口下的通用方法
  • Ubuntu22.04 安装vitis2023.2 卡在“Generating installed device list“.
  • 【Datawhale AI夏令营】让AI读懂财报PDF(多模态RAG)(Task 2)
  • 用 C 语言深入理解 Linux 软链接:原理、API 与编程实践
  • 【CTF】PHP反序列化基础知识与解题步骤
  • Claude Code 的核心能力与架构解析
  • Alibaba Cloud Linux 3 生成 github 公钥
  • 【Word】行中包含英文字符致使下划线加粗的解决方法
  • 3款强力的Windows系统软件卸载工具
  • 理解协议最大传输单元(MTU)和TCP 最大报文段长度(MSS)
  • 力扣热题100------70.爬楼梯
  • 从零学习three.js官方文档(一)——基本篇
  • 每日五个pyecharts可视化图表-line:从入门到精通
  • 记录一次ubuntu20.04 解决gmock not found问题的过程
  • Spring 框架中提供Aware接口,实现感知容器对象