营销网络的建设是什么意思,兰州快速seo整站优化招商,济南网站价格,蜜雪冰城网络营销案例分析库文件和头文件编写
有时候#xff0c;通过C编写的代码并不一定是直接在自己的控制台文件调用#xff0c;而是需要在其他程序中调用编写的算法的接口即可。这个时候#xff0c;可以把自己编写的代码打包成一个库#xff08;Library#xff09;#xff0c;编译后被其他程…库文件和头文件编写
有时候通过C编写的代码并不一定是直接在自己的控制台文件调用而是需要在其他程序中调用编写的算法的接口即可。这个时候可以把自己编写的代码打包成一个库Library编译后被其他程序调用。库一般是许多算法和程序的集合。
本文记录库文件和头文件编写过程。 本文通过clion来创建项目可以在创建项目的时候选择自己的库文件是共享链接库或者静态链接库。 静态库静态库每次调用时都会生成一个副本比较占空间。 共享库在多次调用时只会产生一个副本节省空间生成共享库的方法是在CMakeList.txt文件中加入以下指令
#该指令语法格式add_library( 程序名 源代码文件 )
add_library( hello_shared SHARED libHelloWorld.cpp )即关键字SHARED
基础的CMakeList.txt中的内容
cmake_minimum_required(VERSION 3.24)
project(LibraryCodeLearn)set(CMAKE_CXX_STANDARD 17)add_library(LibraryCodeLearn SHARED library.cpp)
cmake_minimum_required 告诉计算机要编译CMakeList.txt的最小CMake版本。 project 则表明项目名 set(CMAKE_CXX_STANDARD 17) 设置编译器的C标准当前项目使用的是C17标准。
引入第三方库的方法
要引入第三方库首先要下载好第三方库的源代码。并放在项目指定的目录下。
以引入OpenCV库为例从OpenCV的官网https://opencv.org/下载好源代码。并将其解压到项目指定的目录或是某个集中配置的目录。
通过添加以下代码到CMakeList.txt中引入OpenCV
#引入OpenCV
set(OpenCV_DIR opencv/build)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})add_library(LibraryCodeLearn SHARED library.cpp)
target_link_libraries(ProgramName ${OpenCV_LIBS})set(OpenCV_DIR opencv/build) 制定了OpenCV的build目录find_package(OpenCV REQUIRED) 指定程序需要先找到OpenCV库REQUIRED 要求程序必须找到该库否则会报编译错误。include_directories(${OpenCV_INCLUDE_DIRS}) 将OpenCV库的头文件目录包括进来target_link_libraries(ProgramName ${OpenCV_LIBS}) 指定链接到的库
编写头文件
头文件是C、C程序中重要的组成部分通常会将.h头文件和.cpp文件放在不同的文件夹常见的储存方式是.h文件放在include中.cpp文件放置在src文件中。 在include文件下新建一个libHelloWorld.h文件。clion会生成一些内容 #ifndef UNTITLED_LIBHELLOWORLD_H
#define UNTITLED_LIBHELLOWORLD_H
//进行宏定义是为了防止重复引用头文件而引起重定义错误
#endif //UNTITLED_LIBHELLOWORLD_H该宏定义过程为
#ifndef 大写头文件名_H
#define 大写头文件名_H#endif可以向对应的.cpp文件中写入函数并在头文件中声明。 .cpp文件中代码如下
#include iostreamusing namespace std;void printHello()
{cout Hello world! endl;
}并在对应的头文件中声明
#ifndef UNTITLED_LIBHELLOWORLD_H
#define UNTITLED_LIBHELLOWORLD_H
void printHello();
#endif //UNTITLED_LIBHELLOWORLD_H通过编译即可生成动态链接库.so文件。