error: ‘CV_DEPRECATED_EXTERNAL’ does not name a type; did you mean ‘TRT_DEPRECATED_ENUM’?
时间: 2023-08-16 08:07:39 浏览: 212
这个错误是由于OpenCV版本问题导致的。在旧版本的OpenCV中,使用的是`CV_DEPRECATED_EXTERNAL`,而在新版本中已经被替换成了`TRT_DEPRECATED_ENUM`。解决这个问题的方法是将错误信息中的`CV_DEPRECATED_EXTERNAL`替换成`TRT_DEPRECATED_ENUM`。如果你使用的是旧版本的OpenCV,可以在代码中添加以下宏定义来避免这个错误:
```
#define TRT_DEPRECATED_ENUM CV_DEPRECATED_EXTERNAL
```
如果你使用的是新版本的OpenCV,则不需要添加这个宏定义。
相关问题
Building CXX object CMakeFiles/yolov5.dir/calibrator.cpp.o In file included from /home/leo1/Prometheus/Modules/object_detection/py_nodes/yolov5_tensorrt_server/calibrator.cpp:4:0: /home/leo1/opencv/modules/dnn/include/opencv2/dnn/dnn.hpp:189:9: error: ‘CV_DEPRECATED_EXTERNAL’ does not name a type; did you mean ‘TRT_DEPRECATED_ENUM’?
这个错误是由于OpenCV版本的问题导致的。`CV_DEPRECATED_EXTERNAL`是OpenCV 4.3版本中的宏定义,而在更早的版本中是没有定义的,所以编译器无法找到该定义导致错误。
你可以尝试升级OpenCV版本到4.3或更高版本,或者将使用了`CV_DEPRECATED_EXTERNAL`的代码删除或注释掉。如果你想继续使用旧版本的OpenCV,可以在代码中手动定义`CV_DEPRECATED_EXTERNAL`宏,例如:
```
#define CV_DEPRECATED_EXTERNAL __attribute__((deprecated))
```
这样就能够解决这个问题了。
Building CXX object CMakeFiles/yolov5.dir/calibrator.cpp.o In file included from /home/leo1/Prometheus/Modules/object_detection/py_nodes/yolov5_tensorrt_server/calibrator.cpp:4:0: /home/leo1/opencv/modules/dnn/include/opencv2/dnn/dnn.hpp:189:9: error: ‘CV_DEPRECATED_EXTERNAL’ does not name a type; did you mean ‘TRT_DEPRECATED_ENUM’?是什麼意思
这个错误是由于在编译过程中,CMake尝试编译`yolov5_tensorrt_server`的时候,其中的`calibrator.cpp`文件包含了`dnn.hpp`头文件,但是编译器在处理这个头文件时,发现其中用到的`CV_DEPRECATED_EXTERNAL`类型未定义,因此报错。
`CV_DEPRECATED_EXTERNAL`是一个OpenCV中的宏定义,用于标记某些API已经被官方弃用,不建议使用。错误信息中提到了`TRT_DEPRECATED_ENUM`,这是NVIDIA TensorRT库中的一个宏定义,与OpenCV中的`CV_DEPRECATED_EXTERNAL`类似。可能是由于版本的问题,编译器建议你替换成`TRT_DEPRECATED_ENUM`。
解决这个错误的方法可以是升级OpenCV和NVIDIA TensorRT库到最新版本,或者在代码中手动将`CV_DEPRECATED_EXTERNAL`替换成`TRT_DEPRECATED_ENUM`,例如:
```
#define CV_DEPRECATED_EXTERNAL TRT_DEPRECATED_ENUM
```
这样可以解决编译错误。
阅读全文