动态库和静态库以及OpenCV库配置解释
来源:互联网 发布:ps4网络设置 编辑:程序博客网 时间:2024/05/21 23:33
动态库和静态库
静态链接库:需要提供生成库的*.h文件和*.lib文件
在生成库的*.h文件中,声明格式为:
extern“C” 函数返回类型 函数名(参数表)
在*.cpp源文件中,
#include“..\lib.h”
#pragmacomment( lib, “..\\debug\\libTest.lib”) // 手动添加
// 指定与静态库一起链接的(或者在IDE的lib栏中填入lib文件的路径(自动添加))
动态链接库:需要提供*.dll和*.lib,或者只提供*.dll
1.导出函数,可提供应用程序使用
2.DLL内部函数,只能在DLL中使用
DLL的导入导出:(可以参看下面的例子)
#ifdefWLL_EXPORT
#defineWLL_API_declspec(dllexport)
#else
#defineWLL_API_declspec(dllimport)
#endif
(注意,动态库和静态库的*.lib文件不一样。动态库的只含有一些文件的基本信息,文件名之类,不包含函数的实现。)
DLL文件的加载方式:(使用dll文件)
静态加载:
1.包含DLL中导出的*.h头文件
2.采用#pragma comment(lib, “..\\debug\\libTest.lib”) // 导入DLL文件的*.lib文件
或者,在project->setting->Linker->Input的AdditionalDependencies(附加依赖项)中添加*.lib文件。(OpenCV常见的配置方式就是这种)
3.将动态库生成的*.dll放到*.exe或者*.dll的同一目录下。
动态加载:
假设Other.dll有一个int Add (int x, int y ),则调用过程为:
Typedefint (*FunPtr)(int , int); // 定义指针函数
FunPtrfunPtr;
Handle handle = LoadLibrary(“Other.dll”);
funPtr = (FunPtr) GetProcAddress(Handle, “Add”);
funPtr( 2 , 3 );
FreeLibrary(handle);
OpenCV库的配置解释:
网上常见的都是使用的“静态加载”的配置方法,这样的好处就是不需要每次都去动态加载dll。
过程一般是:
1.在“用户变量”中添加dll文件的所在路径(D:\opencv\build\x86\vc11\bin)
2.在“包含目录”中添加需要的*.h的路径
3.在“库目录”中添加*.lib文件的路径
4.在“附加依赖性”中添加lib文件的全名
然后就配置结束了。这样对于配置的过程就很清晰了。
网上流传着大致两种配置,第一是在属性页“Microsoft.Cpp.Win32.user”中配置。优点是一次配置,终生使用。但是问题是需要将debug和release的lib文件名都输入到“附加依赖项”中(debug和release中都分别有Microsoft.Cpp.Win32.user,但其实本质是一个)。有些程序运行时会有问题(比如stitching)。
还有一种是新建属性页,然后再进行配置。优缺点也是显而易见的,需要每次配置。
所以个人建议,学习的时候使用第一种,在工程运用中使用第二种。
- 动态库和静态库以及OpenCV库配置解释
- Opencv编译arm平台的静态和动态库
- VisualStudio+OpenCV 静态库配置
- 在静态库下使用MFC和共享DLL下使用MFC 这两种情况 opencv的配置,以及配置opencv配置中容易出现的问题
- 在静态库下使用MFC和共享DLL下使用MFC 这两种情况 opencv的配置,以及配置opencv配置中容易出现的问题
- 库的静态和动态调用以及创建
- 动态库和静态
- OpenCV - VC2010中使用OpenCV静态库和动态库(区别)
- 静态调用OpenCV库以及生成自己的静态库
- 转:关于GCC中同时使用动态和静态库链接的操作参数和解释
- 转:关于GCC中同时使用动态和静态库链接的操作参数和解释
- 关于GCC中同时使用动态和静态库链接的操作参数和解释
- 关于GCC中同时使用动态和静态库链接的操作参数和解释
- 关于GCC中同时使用动态和静态库链接的操作参数和解释
- 静态库与动态库的区别以及优缺点,在linux环境下配置静态库与动态库
- Opencv在MFC静态库的配置
- 关于lib,dll,.a,.so,静态库和动态库的解释说明
- 如何理解Linux下的动态库概念,和静态库概念,通俗易懂的解释如下:
- C语言之循环结构
- 使用math.h常见错误
- 记 onSaveInstanceState(Bundle)
- 浙大 PAT 甲级1009
- Android中Json的全解析(JSONObject,JSONArray,Gson,Jackson)
- 动态库和静态库以及OpenCV库配置解释
- C#33课的主要内容
- JavaFX之TableView的SelectionMode
- sublime 相同一起编辑,自动缩进
- 选中select框后返回其中的值
- Ubuntu下使用Vi是方向键变乱码 退格键不能使用的解决方法
- git常用命令教程
- TensorFlow使用技巧
- swift单例模式一句话实现