加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用外部库进行OpenCV c应用程序部署

发布时间:2020-12-16 06:54:59 所属栏目:百科 来源:网络整理
导读:我试过没有运气的搜索很多(可能是因为我没有使用正确的技术术语).我的问题主要与链接静态库,编译和部署有关.在我进入细节之前,我的可执行文件在我的系统上编译良好;主要问题是如何将这些作为工作解决方案部署到其他人. 我编写了一个使用OpenCV静态库的基本c
我试过没有运气的搜索很多(可能是因为我没有使用正确的技术术语).我的问题主要与链接静态库,编译和部署有关.在我进入细节之前,我的可执行文件在我的系统上编译良好;主要问题是如何将这些作为工作解决方案部署到其他人.

我编写了一个使用OpenCV静态库的基本c图像处理exe(我在VC中使用Project> Properties> Linker>链接这些,作为标准添加其他依赖项).我通过设置VC选项指向正确的包含文件编译…基本上,它编译都很好.我现在希望能够在另一台PC上部署它.我明白我需要exe静态库的发布版本……还有什么吗?

一些lib依赖于使用libjpeg和libpng;我不认为这些是标准的.此外,我将静态库的链接器路径设置为相对的(例如资源/库),因此它不依赖于系统,因此它知道在哪里找到库.基本的OpenCV数据结构工作正常(例如CvPoint),但是当我尝试使用CvLoadImage加载图像时,应用程序崩溃了.如果我使用标准的ifstream fopen,我可以毫无问题地打开文件(但似乎无法将其放入IplImage OpenCV图像支柱中 – 有没有人知道如何做这些?可能与IplImage-> imageData有关. ).

任何帮助非常感谢.谢谢!

解决方法

静态库不必(也不应该)与应用程序一起分发.静态库由链接器内置到exe文件中. OpenCV崩溃的原因是它无法找到libpng / libjpeg dll. OpenCV不会将它们链接为静态依赖项,而是在运行时使用LoadLibrary / dlopen API.如果这些调用失败,可能没有很好的恢复,应用程序崩溃.如果包含libpng / libjpeg库,则应修复问题. 还要注意 – 一些.lib文件不是真正的静态库,而只是一个薄层,允许链接器在DLL中找到适当的函数并生成动态链接代码,这样程序员就不必手动执行.您通常会看到.lib文件的大小非常小,并且您的应用程序声称它在exe启动时无法找到DLL入口点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读