企业网站html源代码,效果图网址大全,个人网站域名备案流程,重庆建设工程造价管理makefile 编译动态链接库使用#xff08;.so库文件#xff09;
动态链接库:不会把代码编译到二进制文件中#xff0c;而是在运行时才去加载#xff0c; 好处是程序可以和库文件分离#xff0c;可以分别发版#xff0c;然后库文件可以被多处共享
动态链接库
动态#…makefile 编译动态链接库使用.so库文件
动态链接库:不会把代码编译到二进制文件中而是在运行时才去加载 好处是程序可以和库文件分离可以分别发版然后库文件可以被多处共享
动态链接库
动态动态加载
链接二进制文件和库文件分离。
库 库文件 .so
新建一个文件TestSo
//
// Created by qiufh on 2024-01-21.
//#ifndef UNTITLED3_TESTSO_H
#define UNTITLED3_TESTSO_Hclass TestSo {
public:void fun1();virtual void fun2();virtual void fun3() 0;
};//
// Created by qiufh on 2024-01-21.
//#include TestSo.h
#include iostream
void TestSo::fun1() {printf(fun1\n);
}
void TestSo::fun2() {printf(fun2\n);
}
void TestSo::fun3() {printf(fun3\n);
} 编译一下 main.cpp
#include iostream
#include TestSo.h
class Test:public TestSo{
public:void fun2() {printf(fun2\n);}void fun3() {printf(fun3\n);}
};
int main() {Test test;test.fun1();test.fun2();test.fun3();std::cout Hello, World! std::endl;return 0;
}
写好之后我们放到linux系统中验证 编译成动态库.so文件 新建一个test.cpp测试文件
#include iostream
#include SoTest.h
class Test:public SoTest{
public:void fun2() {printf(fun2\n);}void fun3() {printf(fun3\n);}
};
int main() {Test test;test.fun1();test.fun2();test.fun3();return 0;
}链接动态库文件执行测试一下没问题输出打印信息。 将cpp文件与so文件链接并生成执行文件先将so文件拷贝至/lib文件夹内 否则将会出现下面的错误 把这个动态库的编译流程写入makefile文件中 先clean一下 再make一下 然后要把so文件拷贝到/lib目录下否则会报错 成功