链接库头文件:
head.h
class A
{
public:
A()
virtual ~A()
int gt()
int pt()
private:
int s
}
firstso.cpp
#include <iostream>
#include "head.h"
A::A(){}
A::~A(){}
int A::gt()
{
s=10
}
int A::pt()
{
std::cout<<s<<std::endl
}
编译命令如下:
g++ -shared -o libmy.so firstso.cpp
这时候生成libmy.so文件,将其拷贝到系统库里面:/usr/lib/
进行二次封装:
secso.cpp
#include <iostream>
#include "head.h"
extern "C"
{
int f()
int f()
{
A a
a.gt()
a.pt()
return 0
}
}
编译命令:
gcc -shared -o sec.so secso.cpp -L. -lmy
这时候生成第二个.so文件,此时库从一个类变成了一个c的接口.
拷贝到/usr/lib
下面开始调用:
test.c
#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
$
您好,很高兴回答您的问题。在c语言中,专门建立有一组需要经常使用、但是编写起来不太简单的函数,系统把这些功能载入到软件内容。普通用户所需要使用时,只需要按照规定输入正确的调用语句,即可打开并运行谢谢文件。打开的格式为#include<对应文件名>,如打开输入输出函数为#include<stdio. h>。