一、为什么会遇到这个问题

公司需要对多图进行拼接,经过多番查找发现了OpenStitching这个库。可以实现多图拼接。在python段尝试了之后感觉效果不错,所以使用Visual Studio进行C++开发。

在读取图片的时候发现imread方法无论怎么样都无法读取到图片。

二、解决办法

我一开始以为是路径的问题,在尝试过相对路径、绝对路径无果后,就开始排查其他的问题。最后的解决办法:

如果工程配置的是debug,那么在添加 “配置属性 -> 链接器 -> 输入 -> 附加依赖项” 的时候,需要添加的静态库是带有d结尾的lib文件。

这样就解决了问题。

三、为什么会有这个问题

小弟不才,还是问了AI。以下是AI给出的解释,大家当个参考吧。

调试版本库和发布版本库之间的主要区别在于编译器的设置和优化。以下是一些关键区别:

调试信息:

调试版本库(Debug Build):包含了额外的调试信息,比如符号表和源代码映射,这使得你在调试时能够更容易地跟踪代码和诊断问题。调试版本库没有经过优化,代码的执行速度可能较慢,但调试信息能帮助你更好地理解代码的执行情况。
发布版本库(Release Build):不包含调试信息,经过优化以提高代码的执行效率和性能。优化可能会改变代码的执行方式,使得调试信息不再有效,因此在发布版本时,调试信息通常是不需要的。
优化: 调试版本库:编译器通常会关闭优化,以便你可以逐步执行代码并检查变量的值。这使得调试过程更可控,但可能导致生成的代码效率较低。
发布版本库:编译器会开启各种优化选项,试图提高程序的执行速度和减少代码体积。这些优化可能会对代码行为产生影响,比如内联函数、循环展开等。
运行时检查: 调试版本库:通常会启用额外的运行时检查,比如边界检查、断言等。这些检查帮助捕捉潜在的错误,但也会带来额外的运行时开销。
发布版本库:通常会关闭这些运行时检查,以提高性能。
库文件的命名: 调试版本库:通常会带有 d 后缀(例如 opencv_world4100d.lib 和 opencv_world4100d.dll)。
发布版本库:没有 d 后缀(例如 opencv_world4100.lib 和 opencv_world4100.dll)。
在项目中混用调试和发布版本库可能会导致不兼容的问题,特别是在使用第三方库(如 OpenCV)时。如果你在调试模式下使用了发布版本库,或者在发布模式下使用了调试版本库,可能会遇到一些无法预测的行为或错误。因此,确保你的编译设置与链接库版本相匹配是非常重要的。

记录一个opencv的imread方法无法读取成功的问题,【设计到visual studio和静态库(lib)匹配的问题】的更多相关文章

  1. windows中静态库lib和动态dll的区别及使用方法

    1. 静态库lib和动态dll的区别 1.1 项目类型 VS在建Win32项目时,有以下选项: windows应用程序控制台应用程序DLL静态库最后两个类型:DLL和静态库,这两种项目类型是不可以单独 ...

  2. Compaq Visual Fortran生成静态库的方法及使用

    Compaq Visual Fortran 6.5生成lib静态库详细方法: 打开Compaq Visual Fortran,新建Fortran Static Library工程,命名为ForLib: ...

  3. 记录一个 关于 python 普通方法,静态方法和类方法 的介绍。@classmethod @staticmethod

    上班时间 只贴看到最厉害的答案 回头总结 http://stackoverflow.com/questions/12179271/python-classmethod-and-staticmethod ...

  4. 利用CMake和OpenCV源代码生成Visual Studio工程

    OpenCV1.0版本有windows,linux之分,笔者曾经一直使用Opencv1.0.这个版本在下载,安装之后,在 \OpenCV\_make文件夹下面已经存在了一个opencv.dsw的工程文 ...

  5. VS编译linux项目生成静态库并在另一个项目中静态链接的方法

    VS2017也推出很久了,在单位的时候写linux的服务端程序只能用vim,这让用惯了IDE的我很难受. 加上想自己撸一套linux上的轮子,决定用VS开工远程编写调试linux程序. 在window ...

  6. opencv的imread函数相对路径问题和 main 参数问题

    参考: https://blog.csdn.net/u013404374/article/details/80178822 https://blog.csdn.net/fujilove/article ...

  7. 各种方法配置 Visual Studio 第三方库

    配置第三方库如Opencv,或者软件开发商提供的SDK时,一般需要配置三个文件: 头文件(.h),引入库(.lib)文件(也称“导入库文件”),动态链接库(.dll)文件 下面以度申科技的相机sdk配 ...

  8. qt 4.6.2 与visual studio 2005 集成(编译方法,以及中间遇到的问题)

    不知不觉在蒂森差不多半个月了,哈哈,时间过得很快,过得很充实,近来研究QT,首先嘛,肯定要学会安装了,这最基础的不会更不用说下面的啦.闲话少说,进正题,基本的安装步骤网上多的是,但参考一个大多数情况是 ...

  9. 打包静态库.a文件的方法(ar,ranlib,nm命令介绍)

    一 常用脚本 1 打包脚本 脚本如下,下面附上ar 和 ranlib命令参考(命令来自于网络) ALLLIB=*.aFILE=`ls *.a`#原来的库解压重命名 for F in $FILEdo   ...

  10. 动态库与静态库的学习 博主写的很好 静态库 编译的时候 需要加上 static 动态库编译ok运行不成功就按照文章中的方法修改

    来源连接   http://www.cnblogs.com/skynet/p/3372855.html C++静态库与动态库 这次分享的宗旨是--让大家学会创建与使用静态库.动态库,知道静态库与动态库 ...

随机推荐

  1. 从海量信息中脱颖而出:Workflow智能分析解决方案,大语言模型为AI科技文章打造精准摘要评分体系(总篇章)

    从海量信息中脱颖而出:Workflow智能分析解决方案,大语言模型为AI科技文章打造精准摘要评分体系(总篇章) 1.简介 该项目整合了编程.AI.产品设计.商业科技及个人成长等多领域的精华内容,源自顶 ...

  2. 单例模式C++实现

    单例模式 全局静态变量实现饿汉式单例模式 饿汉式实现方式是线程安全的. #include using namespace std; /* 饿汉式单例模式 */ class SingleObject{ ...

  3. 【Docker学习教程系列】8-如何将本地的Docker镜像发布到私服?

    通过前面的学习,我们已经知道,怎么将本地自己制作的镜像发布到阿里云远程镜像仓库中去.但是在实际工作开发中,一般,我们都是将公司的镜像发布到公司自己搭建的私服镜像仓库中,那么一个私服的镜像仓库怎么搭建? ...

  4. CSS & JS Effect – Do something on enter/leave window tab

    需求 我在做一个体验 当用户 submit enquiry 后会 window.open 开启 WhatsApp.而当用户关闭 WhatsApp 回来网站后,会 show 一个 feedback me ...

  5. SQL Server – Transaction & Isolation 事务与隔离

    前言 上回在谈到 Concurrency 并发控制 时, 有提到过事务的概念. 这篇就补上它具体的实现. 以前写过相关的文章: sql server 学习笔记 (nested transaction ...

  6. Linux运行脚本./XXXsh: line 1: $‘\r‘: command not found问题

    Linux运行脚本./XXXsh: line 1: $'\r': command not found问题   在执行./xxx.sh命令时,系统报错: ./xxx.sh: line 1: $'\r': ...

  7. 《MySQL 5.7从入门到精通(视频教学版)》代码课件教学视频下载

    <MySQL 5.7从入门到精通(视频教学版)>代码课件教学视频下载 https://pan.baidu.com/s/1ZufDV6a_PEnjp-Bdh4IkuQ 提取码:vgnr 无版 ...

  8. C#/.NET/.NET Core开发实战教程集

    DotNetGuide介绍 DotNetGuide是一个专注于C#/.NET/.NET Core学习.工作.面试指南的GitHub知识库,该知识库在GitHub中Star数已突破6.5k+当然这离不开 ...

  9. excel江湖异闻录--修迪斯.嗦狸

    因为技术出类拔萃,同学都尊称他为"修神",修神的python.vba.Javascript.java.数据库.批处理等众多编程语言都是极强的,以笔者的见识来判断,大佬的vba已经是 ...

  10. Android Qcom USB Driver学习(七)

    最近遇到了USB 插拔后,系统重启的问题,抓取串口log发现如下问题,log中查看trace分析就是空指针造成的panic Unable to handle kernel read from unre ...