参考博客:http://blog.csdn.net/xiaowei_cqu/article/details/8066329

OpenCV的安装总结

我们下载的OpenCV安装包一般包括源码,示例,文档和编译好的动态链接库

我们写代码如果调用OpenCV的函数,必须对所用的vc需要添加附加依赖项:(我用的vs2008,vs2010可能不一样)

第一步:配置include路径

“工具”->“选项”->“项目和解决方案”->“VC++目录”

->“包含文件”,

Include Directories :C:\OpenCV\OpenCV-2.4.2\build\include

即告诉VC去什么地方寻找OpenCV的头文件,打开VC

第二步:配置lib路径

->“库文件”

Library Diractories:C:\OpenCV\OpenCV-2.4.2\build\x86\vc10\lib

即告诉VC去什么地方寻找OpenCV的库文件

第三步:设置环境变量

两个bin文件夹: C:\OpenCV\OpenCV-2.4.2\build\x86\vc10\bin C:\OpenCV\OpenCV-2.4.2\build\common\tbb\ia32\vc10 添加到系统环境目录

第四步:附加依赖项

然后还需要在Linker->Input->Additional Dependencies

里添加会用到的各种XX.lib,XXd.lib

还有把 有的安装教程里还会教我们在Source Directories添加OpenCV的源码文件,

关于简化以上几步

第一步、第二部是默认配置设置一次即可

第二部可以在代码中加入

#pragma  comment(lib,"cxcore200d.lib")
#pragma  comment(lib,"cv200d.lib")
#pragma  comment(lib,"highgui200d.lib")

就不用再添加了

其实是不需要的。因为实际调用OpenCV里的函数是用的dll的隐式调用方式。

DLL调用

隐式调用一般需要:

声明函数接口的.h文件——include文件夹里的内容

链接动态库的.lib文件——lib文件夹里的内容以及Input->Additional Dependencies添加的XX.lib

动态链接库.dll文件——bin文件夹的内容 这里bin文件夹是在系统环境目录里的,所以执行代码是exe文件可以找到。

也可以添加在系统文件中,把需要用到的dll拷贝到exe同一个文件夹下即可。

所以,如果把未发布的工程拷贝到没有opencv的电脑上,只要把需要用的函数相关的.h,.lib以及.dll文件考过去即可。

另一种调用dll的方式是显示调用:

显示调用是不需要.lib和.h文件的,只会用到dll文件。

但需要在代码里“显示”加载要用到的函数。例如:

[cpp]
  1. HINSTANCE hDLL=NULL;//生命DLL句柄
  2. hDLL=LoadLibrary("opencv_core242d.dll");  //加载DLL
  3. HMAT myImread=(HMAT)GetProcAddress(hDLL,"imread");  //使用DLL中的函数

这样在拷贝工程时只拷贝用到的DLL文件就可以。

但这样代码写得很麻烦,DLL换个名字版本之类的要改很多地方,一般用得不多。

静态编译的exe程序

如果只是给别人静态链接的exe程序,比如一个demo,不用跑程序。

最常用的方法就是一起拷贝exe和dll文件到目标电脑: 也就是将需要用到的dll文件拷到exe文件夹下即可,Release拷贝XX.dll,Debug版本拷贝XXd.dll (所以我们写Additional Dependencies不用到的尽量不写,这样拷的dll会少一些~)

再一种方法就是把OpenCV的源码一起编译到可执行文件中。

这种需要在写代码时把OpenCV的源文件加入到工程中。也就是用到的.cpp文件目录添加到Source Directories项中。 编译头文件可能会遇到"找不到文件结尾”之类的错误,在项目属性Category中选择"Precompiled Headers"和"Not using precompiled headers"即可。

这样工程不是调用的OpenCV编译过的dll文件,而是把OpenCV当成你自己写的文件一样一起编译。

在没有安装OpenCV的电脑上只用拷贝最终的exe文件即可。不需要dll文件,只是生成的exe会比较大~

转载于:https://www.cnblogs.com/happycaoyue/archive/2013/04/09/3010578.html

openvc学习笔记(4)——两种方法在没有环境下运行程序相关推荐

  1. ViSP学习笔记(四):在Gazebo环境下实现Pionner3dx移动机器人基于四个特征点的视觉伺服仿真

    开发环境:Unbuntu 18.04 LTS + ROS Melodic + ViSP 3.3.1 文章内容主要参考ViSP官方教学文档:https://visp-doc.inria.fr/doxyg ...

  2. SEO学习笔记二:在搜索引擎竞价排名环境下,个人网站将何去何从?

    本文首发于「妙蛙种子前端」博客,欢迎关注- 早期的搜索引擎,大家都在一个相对公平的规则内玩耍:你的内容够好,网站体验更优秀,在搜索引擎中的排名一般都会比较高. 因为搜索引擎能便捷的为我们定位到精准的内 ...

  3. Paraview安装两种方法(ubuntu系统下)

    一.第一种安装步骤: 本教程可以实现的功能,通过插件,可以实现点击图标以及命令行两种方法打开paraview. 该教程运自油管,适用于已经安装了ubuntu系统和openfoam,并且没有安装第三方p ...

  4. 《具体数学》学习笔记: 4.四种方法推导平方和公式

    四种方法推导平方和公式 序言: 连续自然数的平方和, Sn=∑k=0nk2=12+22+...+n2S_n = \sum_{k=0}^{n}{k^2} = 1^2 + 2^2 + ... + n^2S ...

  5. 循环,100遍“好好学习,天天向上”两种方法。

    1.while 结构 while循环:          *     语法结构:          *         初始值;          *         while(循环条件){    ...

  6. Visp_ros学习笔记(二):在Gazebo环境下实现Pionner3dx移动机器人视觉伺服仿真

    开发环境:Unbuntu 18.04 LTS + ROS Melodic + ViSP 3.3.1   本文主要介绍了如何实现Pionner3dx移动机器人视觉伺服仿真,仿真环境是ROS+Gazebo ...

  7. LwIP应用笔记(三):在RTOS环境下运行LwIP协议栈

    前言 这篇文章是 LwIP应用笔记(二):无操作系统支持下的RAW API移植 的后续,以下所有内容都是建立在已经完成RAW API移植的前提下.本文可能不会太纠结于代码细节,因为本文的目标并不是演示 ...

  8. 在线分享notebook笔记的两种方法

    在线分享jupyter notebook笔记 方法1-使用GitHub存储库 方法2-使用nbviewer (nbviewer好像还可以在线编辑及运行) 方法1-使用GitHub存储库 https:/ ...

  9. 中文乱码翻译器在线翻译_如何将芬兰语翻译成中文?这两种方法你得会

    我们在工作中有时候也会接触得到一些特殊的任务.举个例子,如果哪天上级让我们翻译芬兰语,若是不会翻译就很尴尬了.该怎么办呢?如何将芬兰语翻译成中文呢?这里小编想要推荐给大家两个比较好用的方法,有需要的小 ...

最新文章

  1. 微信一键关注 php,微信公众平台开发一键关注微信公众平台账号
  2. 机器学习入门学习笔记:(3.1)决策树算法
  3. 昨天还在for循环里写加号拼接字符串的那个同事,今天已经不在了
  4. 前端工程师笔试题(欢迎评论留言)
  5. Wikioi 1222 信与信封问题(二分图匹配)
  6. 《LoadRunner 没有告诉你的》之四——理解性能
  7. 【数据库】数据库查询之关键字except,having
  8. origin2016中怎么画多条曲线,并且分别给不同曲线设置标记
  9. 如何用firebug调试js
  10. 盒马把ID玩没了?更名“盒盒马马”后原昵称改不回来,网友笑翻了:官微急了...
  11. python函数定义及调用-python 中函数的定义以及调用先后顺序问题
  12. java web打印 闪退_tomcat闪退解决方案
  13. 移动网站建设应注意哪些问题?
  14. Mixly-呼吸灯及可调灯
  15. 关于一台电脑安装多个jdk后使用时如何切换
  16. cousera课程 Introduction to Programming with MATLAB 范德堡大学 作业1
  17. 如何搭建Hyperledger fabric网络
  18. 第八部分 项目资源管理
  19. 江西宜春三名公务员擅自驾公车钓鱼被通报-公车钓鱼-公务员-公车
  20. iOS 拓展,icon,尺寸 开发系列 吕文翰

热门文章

  1. 阿里巴巴开源Weex 开发教程
  2. 解决Eclipse无法打开“Failed to load the JNI shared library”(转)
  3. 基于VUE的前端crypto-js aes加密与解密
  4. CDN预热与刷新在促销活动中的应用
  5. iOS 调用h5页面 视频不自动播放的问题
  6. 使用python的docker-py实现docker的api操作
  7. first-child和first-of-type的区别
  8. struts2学生信息管理系统篇章③
  9. 《Oracle Database 12c DBA指南》第二章 - 安装Oracle和创建数据库(2.2 安装数据库软件)...
  10. 英特尔软件学院与中国一起迎接2008