VS2013创建opencv-2.4.10静态链接库

我们平时在VS2013上借用opencv的函数时,很多时候都是以动态链接的方式调用opencv的库函数,以至于脱离了你的电脑到别的电脑上(没装opencv或装了opencv但版本跟你的不一样)运行时,运行不了,这是没有以静态链接的方式!!!!!

注意以下是建立在  在系统环境变量配置好后

步骤1: 右击我的电脑 选择 属性 在点击 高级系统设置 在点击环境变量

自己在用户变量那里新建两个变量 如下图, 变量值如下 当然路径是你自己的

注意 系统变量值后面要加 ; 即英文的分号

后面就可以开始配置静态链接库了

今天下午花了半下午的时间才将自己的电脑配好,网上的教程主要也没说清楚,自己照着原版的配置或多或少遇到问题:

1、Error 1 error LNK2038: mismatch detected for ‘_ITERATOR_DEBUG_LEVEL‘:
value ‘0‘ doesn‘t match value ‘2‘ in bvpmeasure.obj

2、  error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 _Win32WarningHandler 中被引用

error LNK2019: 无法解析的外部符号[email protected],该符号在函数 [email protected]
中被引用

1类下面还有很多错误,解决办法:

步骤一:VS2013中 菜单栏-》视图  选择 属性管理器 打开以下界面  在Microsoft.CPP.Win32.user上右击 选择属性,把附加依赖项清掉原来opencv的链接库

下面是添加静态库!!!!!

运行库的几种选择:Multi-threaded (/MT)  静态release  Multi-threaded Debug (/MTd)  静态debug   Multi-threaded
DLL (/MD) 动态release Multi-threaded Debug DLL (/MDd) 动态debug

一定要注意debug   和 relase下面最好都要改 成配套的

2类下面还有很多错误,解决办法:

步骤一:

自己添加一个头文件,最后包含到相应的cpp中,头文件中添加 #pragma comment(lib,"User32.lib")

如果还是有错误 添加//#pragma comment( lib, "vfw32.lib" )

//#pragma comment( lib, "comctl32.lib"
)  //这两条代码我添加后错误没解决,添加#pragma comment(lib,"User32.lib") 这个解决了

总体来说 只有自己建立个头文件,包含以下命令,就差不多了

#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>

// 这几个依赖库文件必须要添加,
// 因为这些是OpenCV所使用的第三方库
#pragma comment( lib, "IlmImfd.lib")
#pragma comment( lib, "libjasperd.lib")
#pragma comment( lib, "libjpegd.lib")
#pragma comment( lib, "libpngd.lib")
#pragma comment( lib, "libtiffd.lib")
#pragma comment( lib, "zlibd.lib")
//debug
#ifdef _DEBUG
#pragma comment( lib, "opencv_calib3d2410d.lib" )
#pragma comment( lib, "opencv_contrib2410d.lib" )
#pragma comment( lib, "opencv_core2410d.lib" )
#pragma comment( lib, "opencv_features2d2410d.lib" )
#pragma comment( lib, "opencv_flann2410d.lib" )
#pragma comment( lib, "opencv_gpu2410d.lib" )
#pragma comment( lib, "opencv_highgui2410d.lib" )
#pragma comment( lib, "opencv_imgproc2410d.lib" )
#pragma comment( lib, "opencv_legacy2410d.lib" )
#pragma comment( lib, "opencv_ml2410d.lib" )
#pragma comment( lib, "opencv_nonfree2410d.lib" )
#pragma comment( lib, "opencv_objdetect2410d.lib" )
#pragma comment( lib, "opencv_ocl2410d.lib" )
#pragma comment( lib, "opencv_photo2410d.lib" )
#pragma comment( lib, "opencv_stitching2410d.lib" )
#pragma comment( lib, "opencv_superres2410d.lib" )
#pragma comment( lib, "opencv_ts2410d.lib" )
#pragma comment( lib, "opencv_video2410d.lib" )
#pragma comment( lib, "opencv_videostab2410d.lib" )
#else
#pragma comment( lib, "opencv_calib3d2410.lib" )
#pragma comment( lib, "opencv_contrib2410.lib" )
#pragma comment( lib, "opencv_core2410.lib" )
#pragma comment( lib, "opencv_features2d2410.lib" )
#pragma comment( lib, "opencv_flann2410.lib" )
#pragma comment( lib, "opencv_gpu2410.lib" )
#pragma comment( lib, "opencv_highgui2410.lib" )
#pragma comment( lib, "opencv_imgproc2410.lib" )
#pragma comment( lib, "opencv_legacy2410.lib" )
#pragma comment( lib, "opencv_ml2410.lib" )
#pragma comment( lib, "opencv_nonfree2410.lib" )
#pragma comment( lib, "opencv_objdetect2410.lib" )
#pragma comment( lib, "opencv_ocl2410.lib" )
#pragma comment( lib, "opencv_photo2410.lib" )
#pragma comment( lib, "opencv_stitching2410.lib" )
#pragma comment( lib, "opencv_superres2410.lib" )
#pragma comment( lib, "opencv_ts2410.lib" )
#pragma comment( lib, "opencv_video2410.lib" )
#pragma comment( lib, "opencv_videostab2410.lib" )
#endif

#pragma comment(lib,"User32.lib")
//#pragma comment( lib, "vfw32.lib" )
//#pragma comment( lib, "comctl32.lib" ) 

using namespace cv;

dir *2410.lib /ON /B > libddd.txt

时间: 2024-08-07 08:37:15

VS2013创建opencv-2.4.10静态链接库的相关文章

静态链接库和动态链接库的区别及优缺点

动态链接库和静态链接库的区别 本文参考了以下博客:      1. http://blog.csdn.net/gamecreating/article/details/5504152      2. http://blog.csdn.net/left_la/article/details/12098545      3. http://blog.csdn.net/augusdi/article/details/6460415 静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序

利用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步创建的静态库项目目标目录

静态链接库与动态链接库的区别及动态库的创建(转)

一.引言通常情况下,对函数库的链接是放在编译时期(compile time)完成的.所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file).程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下.所以这些函数库被成为静态库(static libaray),通常文件名为"libxxx.a"的形式.其实,我们也可以把对一些库函数的链接载入推迟到程序运行的时期(runtime).这就是如雷贯耳的动态

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) ; //头文件中,只

静态链接库LIB和动态链接库DLL的区别 创建和示例

1.什么是静态连接库,什么是动态链接库         静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了.但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件.静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接 库.静态链接库

配置使用OpenCV静态链接库

配置opencv静态链接库需要用到:staticlib 在配置链接器->附加库目录时应该为staticlib的路径.同理若是利用动态链接库则只需要lib的路径: 动态链接库则使用lib,然而在使用staticlib的时候报了一些错误: 无法解析的外部符号 "public: __thiscall cv::SIFT::SIFT(int,int,double,double)... 应该是没有成功调用到sift模块,因为opencv中的sift模块处于nonfree: 所以应该是静态库中lib没有

Qt 共享库(动态链接库)和静态链接库的创建及调用

前言: 编译器 Qt Creator, 系统环境 win7 64 位 1.创建共享库: 新建文件或项目->选择 Library 和 c++ 库->选择共享库->下一步(工程名为 sharedlib) 生成的目录结构如图: 修改 sharedlib.h 中的代码: // sharedlib.h #ifndef SHAREDLIB_H #define SHAREDLIB_H #include "sharedlib_global.h" class SHAREDLIBSHAR

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

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

Linux 静态链接库和动态连接库

(0)文件夹 VMware 下安装Ubuntu的吐血经历 零基础学习Shell编程 Linux下的makefile的妙用 Linux调试神器 -- gdb 十分钟学会Python的基本类型 Linux 静态链接库和动态连接库 一:静态链接库的应用  三步走~~~ ##g++ -c StaticMath.cpp ##ar -crv libstaticmath.a StaticMath.o ##g++ -o run test_a.cpp -L. -lstaticmath #[@sjs_37_33 l