配置使用OpenCV静态链接库

配置opencv静态链接库需要用到:staticlib

在配置链接器-》附加库目录时应该为staticlib的路径。同理若是利用动态链接库则只需要lib的路径:

动态链接库则使用lib,然而在使用staticlib的时候报了一些错误:

无法解析的外部符号 "public: __thiscall cv::SIFT::SIFT(int,int,double,double)...

应该是没有成功调用到sift模块,因为opencv中的sift模块处于nonfree:

所以应该是静态库中lib没有添加完整,所以打开:

在附加依赖性中加入一些lib,这些.lib文件应当来自于staticlib文件夹中,打开它可以看到:(同理利用动态库时应当将所有lib文件夹下面的.lib文件加入到附加依赖项中)

因为是在debug模式下,所以将所有这些后缀为d的.lib加入到附加依赖项后即可正确运行。

关于使用opencv的静态库或动态库可参见此文

时间: 2024-10-04 10:26:35

配置使用OpenCV静态链接库的相关文章

利用CMake自己创建OpenCV静态链接库(VS2012+OpenCV2.4.12+TBB)

1.准备工作: 1)完成Visual Studio2012安装: 2)下载并解压CMake3.5.0: 3)下载并解压OpenCV2.4.12: 4)下载并解压TBB44_20160128oss. 2.创建OpenCV静态链接库编译项目的目标目录. 3.由CMake生成OpenCV静态链接库编译项目: 1)双击cmake-gui.exe,删除配置缓存,选择编译平台,如下图所示: 2)选择OpenCV2.4.12源码所在目录(CMakeLists.txt所在目录)以及第2步创建的静态库项目目标目录

VS2013创建opencv-2.4.10静态链接库

我们平时在VS2013上借用opencv的函数时,很多时候都是以动态链接的方式调用opencv的库函数,以至于脱离了你的电脑到别的电脑上(没装opencv或装了opencv但版本跟你的不一样)运行时,运行不了,这是没有以静态链接的方式!!!!! 注意以下是建立在  在系统环境变量配置好后 步骤1: 右击我的电脑 选择 属性 在点击 高级系统设置 在点击环境变量 自己在用户变量那里新建两个变量 如下图, 变量值如下 当然路径是你自己的 注意 系统变量值后面要加 ; 即英文的分号 后面就可以开始配置

Windows 下动态链接库和静态链接库

1.静态链接库:就是在编译的时候把库中代码复制进工程中,导致工程变大,但是速度快. 缺点在于一套代码可能在内存中有多份拷贝,占用内存. 2.动态链接库:库由windos api加载库代码,内存中只有一份拷贝.工程中只保留链接到这份代码的引用,有两种动态链接库, (a)load time dynamic linking:工程运行的时候自动加载,结束时自动卸载 (b) run time dynamic linking: 在工程运行过程中通过调用LoadLibrary()和GetProcAddress

VS2010中如何将动态链接库改成静态链接库

VS2010中如何将动态链接库改成静态链接库 VS2010静态编译生成的.exe可执行文件,可以免安装免DLL在其他电脑直接运行. 静态编译:就是在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖动态链接库. 1. 编译实现方式有两种 [1]debug方式的静态链接: 设置: (1)项目 -> 配置属性->常规->MFC的使用:在静态库中使用MFC(如果有使用MFC). (2)项目 -> 配置

C++中的动态链接库和静态链接库

转自 作者:吴秦出处:http://www.cnblogs.com/skynet/ 这次分享的宗旨是--让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择.这里不深入介绍静态库.动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书<程序员的自我修养--链接.装载与库>. 什么是库 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形式

C++ 动态链接库和静态链接库

概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量.函数或类.在仓库的发展史上经历了"无库-静态链接库-动态链接库"的时代. 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了.但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以"动态"地引用和卸载这个与EXE

App开发流程之数据持久化和编译静态链接库

先记录数据持久化. iOS客户端提供的常用数据持久化方案:NSUserDefaults代表的用户设置,NSKeydArchiver代表的归档,plist文件存储,SQLite数据库(包括上层使用的Core Data,FMDB). 每种方案都有各自的应用场景和范围,不能一概而论.不过可以大致以数据储存量和复杂度来区别. 除了以上提到的方案,再记录一种方案:LevelDB代表的键值对数据库. NSUserDefaults常用方法: 1.可以使用标准用户设置[NSUserDefaults standa

VS2010创建C++静态链接库创建和使用

VS2010创建C++静态链接库的方法: 1. 创建一个新项目,在已安装的模板中选择“常规”,在右边的类型下选择“空项目”,在名称和解决方案名称中输入 staLIB.点击确定. 2.在解决方案资源管理器的头文件中添加staLIB.h文件,在源文件添加staLIB.cpp文件(即实现文件). 3.在staLIB.h文件中添加如下代码: #ifndef STALIB_H#define STALIB_Hextern "C" int FactorialFun(int a) ; //头文件中,只

libcurl的源码,编译为静态链接库出现的问题

libcurl的源码,编译为静态链接库出现的问题如下图所示: 解决方案: 具体步骤就是: 1.给工程添加依赖的库:项目->属性->链接器->输入->附加依赖项,把libcurl.lib ws2_32.lib winmm.lib wldap32.lib添加进去 注意,debug配置用libcurld.lib 2.加入预编译选项:项目->属性->c/c++ ->预处理器->预处理器,把  ;BUILDING_LIBCURL;HTTP_ONLY复制进去(注意不要丢