Alex Blog

[HailoRT]Hailort在Windows中使用的注意事项

最新的4.17.0版本的Hailort,在Windows下基于Hailort编译运行demo时,有时客户会反馈以下报错:

经过测试验证发现,只有当应用程序在x64-Debug模式下编译调试C++ API接口时才会有此报错。如果使用C API接口或者x64-Release模式下则没有此报错。

这个问题与Hailort C++接口中使用了STL有关,因为我们正常安装的libhailort.dll是Release版本,如果使用Debug模式编译应用程序,则会出现兼容性问题。

解决方式:

  1. 使用Release模式编译应用程序
  2. 自行在Windows下编译一个Debug的DLL,将此DLL放到测试程序.exe的目录中即可(Debug的时候会优先寻找程序当前目录,然后才是系统路径里的目录)
  3. 应用程序在Release模式下编译则使用Release DLL, Debug模式下编译则使用Debug DLL.

Hailort在Windows下的编译方式:

Release:

cmake -S . -B build -A x64 -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release

Debug:

cmake -S . -B build -A x64 -DCMAKE_BUILD_TYPE=Debug
cmake --build build --config Debug

可能-DCMAKE_BUILD_TYPE=Release部分没有意义(未验证),关键在于--config Debug部分。

 

在Windows环境中编译Hailort + OpenCV Demo的CMakeLists.txt推荐

set(HAILORT_ROOT "C:/Program Files/HailoRT")
set(HAILORT_INCLUDE "${HAILORT_ROOT}/include")
set(HAILORT_LIB "${HAILORT_ROOT}/lib/libhailort.lib")
set(OpenCV_INCLUDE_DIRS "C:/opencv/build/include")
set(OpenCV_LIBS "C:/opencv/build/x64/vc16/lib/opencv_world490d.lib")
include_directories(${HAILORT_INCLUDE})
include_directories(${OpenCV_INCLUDE_DIRS})

find_package(Threads REQUIRED)
find_package(HailoRT REQUIRED)

target_link_libraries(detection_app PRIVATE ${OpenCV_LIBS})
target_link_libraries(detection_app PRIVATE ${HAILORT_LIB})

 


已发布

分类

,

来自

标签:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注