class A{ public: A(); virtual ~A(); int gt(); int pt();private: int s;};firstso.cpp
#include编译命令如下:g++ -shared -o libmy.so firstso.cpp这时候生成libmy.so文件,将其拷贝到系统库里面:/usr/lib/进行二次封装: secso.cpp#include "head.h"A::A(){}A::~A(){}int A::gt(){ s=10;}int A::pt(){ std::cout< <
#include编译命令:gcc -shared -o sec.so secso.cpp -L. -lmy这时候生成第二个.so文件,此时库从一个类变成了一个c的接口.拷贝到/usr/lib下面开始调用: test.c#include "head.h"extern "C"{int f();int f(){A a;a.gt();a.pt();return 0;}}
#include "stdio.h"#include "dlfcn.h"#define SOFILE "sec.so"int (*f)();int main(){void *dp;dp=dlopen(SOFILE,RTLD_LAZY);f=dlsym(dp,"f");f();return 0;}编译命令如下:gcc -rdynamic -s -o myapp test.c
运行Z$./myapp
10$版权声明:本文为博主原创文章,未经博主允许不得转载。