一、用GCC生成.a静态库与.so动态库
1.编辑生成hello.c、hello.h、main,c文件 右击桌面–在终端打开输入命令mkdir mkdirtest1创建一个文件夹,然后再输入vi main.c还有vi hello,c和vi hello.h创建三个源程序  在main.c文件写入以下代码  hello.h写入以下代码  hello.c写入以下代码
#include<stdio>
void hello(const char *name)
{
printf("Hello%s!\n",name);
}
2.将hello.c编译成hello.o文件
输入gcc -c hello.c命令将hello.c文件编译成.o文件,再输入ls命令查看是否编译  编译成功会显示如上四个文件 3.由.o文件创建静态库 输入ar -crv libmyhello.a hello.o 命令创建一个库名位myhello的静态库,再输入ls命令查看是否创建成功。 
4.使用静态库 输入命令gcc main,c libmyhello.a -o hello  5.由.o文件创建动态库文件 输入gcc -shared -fPIC -o libmyhello.so hello.o 命令 6.程序中使用动态库 输入gcc -o hello main.c -L. -lmyhello 命令 6.程序中使用动态库 输入命令gcc -o hello main.c -L. -lmyhello 
二、静态库.a与.so库文件的生成与使用
1.创建一个文件夹 输入mkdir test2–cd test2创建一个test2文件夹打开该文件,在该文件创建A1.c,A2.c,A.h,test.c文件
 2.静态库.a文件生成与使用  3.共享库.so文件的生成与使用 
三、实例二
main.c代码  sub.h代码  sub1.c代码  sub2.c代码  静态库  动态库 
四、opencv入门
图片 https://blog.csdn.net/ssj925319/article/details/109231145根据该过程安装配置好opencv 另创一个文件夹code,在文件夹创建一个test1.cpp 在该cpp文件中写入如下代码
#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
CvPoint center;
double scale = -3;
IplImage* image = cvLoadImage("lena.jpg");
argc == 2? cvLoadImage(argv[1]) : 0;
cvShowImage("Image", image);
if (!image) return -1; center = cvPoint(image->width / 2, image->height / 2);
for (int i = 0;i<image->height;i++)
for (int j = 0;j<image->width;j++) {
double dx = (double)(j - center.x) / center.x;
double dy = (double)(i - center.y) / center.y;
double weight = exp((dx*dx + dy*dy)*scale);
uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3);
ptr[0] = cvRound(ptr[0] * weight);
ptr[1] = cvRound(ptr[1] * weight);
ptr[2] = cvRound(ptr[2] * weight);
}
Mat src;Mat dst;
src = cvarrToMat(image);
cv::imwrite("test.png", src);
cvNamedWindow("test",1); imshow("test", src);
cvWaitKey();
return 0;
}
输入如下指令  在code文件夹下准备一张图片 
 输入.test1命令 
可以看到图片阴影效果 视频 先win+r,然后输入services.msc,使虚拟机获取摄像头权限  找到蓝色那一栏,确保全权限启动了  点击vm左上角的虚拟机–设置–usb选项,将usb兼容性改为3.0  接着   vm右下角指的这个有绿点,说明连接成功。 新建一个test2.cpp,输入以下代码
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
VideoCapture capture("man.mp4");
while(1){
Mat frame;
capture >> frame;
if(frame.empty())
break;
imshow("读取视频帧",frame);
waitKey(30);
}
system("pause");
return 0;
}
自己准备一个视频,视频名称与格式必须与代码第六行匹配 
输入以下命令   这样就能播放视频了。 录制视频 同理,创建一个test3.cpp,编译,运行  这样录制视频也完成了
|