问题描述:
undefined reference to `cv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
undefined reference to `cv::resizeWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)'
undefined reference to `cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)'
undefined reference to `cv::waitKey(int)'
undefined reference to `cv::destroyAllWindows()'
最近在使用Vitis HLS构建图像处理框架时遇到了如下图所示的问题:
明明已经包含了所需要的库目录,且错误的地方(90~94行)在源代码出也没有高亮错误提示:
解决办法:
由于源代码处错误的地方没有高亮划线提示,那猜测应该不是库目录包含的问题,那么剩下的只有链接库链接可能存在问题,但链接库的linker Flag是按官方教程配置的,链接如下:
https://xilinx.github.io/Vitis_Libraries/vision/2022.1/overview.html#getting-started-with-hls
Linker Flag 的配置如下:
我的Simulation Setting 如下所示:
Linker Flag的地方是:-LF:/Xilinx/OpenCV/opencv/build_cmake/install/x64/mingw/lib -lopencv_core455 -lopencv_imgcodecs455 -lopencv_imgproc455
可以看到Linker Flag和官方描述的是一致的(需要加上自己的opencv版本号)。于是我查看了我的OpenCV/opencv/build_cmake/install/x64/mingw/lib目录如下:
所以我大胆尝试将该目录下的其他链接文件添加进linker Flag里面试试,我修改llinker Flag为如下:-L F:/Xilinx/OpenCV/opencv/build_cmake/install/x64/mingw/lib -lopencv_core455 -lopencv_imgcodecs455 -lopencv_imgproc455 -lopencv_highgui455 -lopencv_photo455 -lopencv_video455 -lopencv_highgui455 -lopencv_plot455
(由于我也不知道需要哪些链接库,所以我就只添加了一些看着眼熟的。。。。。。。。。,如果还是报错,可以将lib目录下的所有链接文件添加至Linker Flag)
然后保存重新进行Run C Simulation如下:
(Clean Build 表示先清除之前构建的一些文件)
然后奇迹般的"undefined reference to"错误居然消失了(有种歪打正着的感觉:))
最后运行出来的结果如下(例子是灰度图转换):
虽然从命令框里看还存在一些Warning如下(也不知道怎么解决,解决了的大佬记得联系我):
文章来源:https://www.toymoban.com/news/detail-782065.html
但程序最后还是能运行的,也正确编译出了csim.exe,于是在此记录使用Vitis HLS时遇到的大坑。文章来源地址https://www.toymoban.com/news/detail-782065.html
到了这里,关于Vitis HLS出现undefined reference to的可能解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!