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’?是什麼意思
时间: 2023-07-04 08:30:17 浏览: 289
这个错误是由于在编译过程中,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
```
这样可以解决编译错误。
相关问题
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))
```
这样就能够解决这个问题了。
opencv make过程中Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2.cpp.o卡住了
这种情况通常是由于编译器或者链接器出现了问题导致的。你可以尝试以下方法解决这个问题:
1. 清空缓存并重新编译:
```
make clean
make
```
2. 尝试重新安装 Opencv:
```
sudo apt-get remove opencv
sudo apt-get install opencv
```
3. 检查你的编译器是否正常:
```
g++ --version
```
4. 检查你的链接器是否正常:
```
ld --version
```
如果以上方法都无法解决问题,你可以尝试在编译时添加 `-v` 参数,查看编译过程中的详细信息,以便更精确定位问题所在。
阅读全文