预备知识

C程序流程

  OpenCV是一个功能强大的计算机视觉库,要用好它,需要相关的计算机视觉理论知识外,还需要C/C++的编程知识。咱们现在就开始先从语言知识开始。

  编程的基本流程包括编辑,编译和连接三个步骤。  大概流程是:先编辑源代码,然后将源代码和头文件组合起来编译,最后连接为可执行文件。

  编辑就不说了,编译是用某种编程语言写成的源代码,转换成目标文件。目标文件包含着机器代码(可以直接被计算机中央处理器执行),以及代码在运行时使用的数据。对源代码进行编译之后生成 “.obj” 文件。

  连接是将多个目标文件,以及库文件生成可执行的文件(或静态库或动态库)的过程。连接器是实现这一目的的软件。常用的连接器有Windows下的link.exe 。Linux下的ID等。

头文件

  在编程过程中,程序代码往往被拆分成很多部分,每部分放在一个独立的源文件中,而不是将所有代码放在一个源文件中。考虑一个简单的例子。程序中有两个函数main()和foo()。main函数位于main.cpp,foo函数位于foo.cpp,我们可以在main函数中调用foo函数。在编译阶段,由于编译是对单个文件进行编译,所以编译main.cpp的时候,编译器不知道是否存在foo函数以及foo函数的调用是否正确。因此需要头文件的辅助。也就是说在编译命令:

      cl.exe/c main.cpp

   运行的时候,编一起不知道foo的用法是否正确(因此foo在另一个文件foo.cpp中),只有借助头文件中的函数声明来判断。对main.cpp进行编译的时候,不会涉及foo.cpp文件,只会涉及main.cpp和foo.h(因为foo.h被include)。

库文件

  库文件中包含一系列的子程序。例如在上一节的例子中,foo.cpp源文件中实现了foo()函数,我们假设foo()函数是包含重要算法的函数,我们需要将foo()函数提供给客户使用,但是不希望客户看到算法源代码。我们需要将foo.cpp编译成库文件,库文件是二进制的,在库文件中是看不到原始的源代码的。库和可执行文件的区别是,库不是独立程序,它们是向其他程序提供服务的代码。

  当然使用库文件的好处不仅仅是对源代码进行保密,使用库文件还可以减少重复编译的时间,增强程序的模块化。将库文件链接到程序中,有两种方式,一种是静态链接库,另一种是动态链接库。如果希望了解

 

posted @ 2016-11-18 17:49  X-POWER  阅读(364)  评论(0编辑  收藏  举报