1 动态库的创建
动态库的创建很容易也有一定的技巧
如:
dynamic,h文件
class zyx
{
private:
int a;
int b;
public:
zyx(int a,int b);
int sum();
};
dynamic.cpp文件
#include"dynamic.h"
zyx::zyx(int a,int b)
{
this->a = a;
this->b = b;
}
int zyx::sum(int a,int b)
{
return a+b;
}
编写完成以后我们可以编译了
gcc -fpic -shared -o libdynamic.so dynamic.cpp
-fpic指的是生成与位置无关的文件
-shared指连接成共享库
这样我们的共享库就建立起来了不过我们最好把dynamic.h放到usr/include目录下把dynamic.cpp放到usr/lib下。这样有一个好处。就是我们可以让系统自动寻找他们。
2 共享库的使用
我们同样首先些一段测试的代码
#include<iostream>
#include<dynamic.h>
using namespace std;
int main()
{
zyx z(1,2);
cout<<z.sum()<<endl;
return 0;
}
这样我们就可以编译了
g++ dynamictest.cpp -o dynamictest -ldynamic
如果没有将dynamic.h放到usr/include目录下把dynamic.cpp放到usr/lib下要手动指定include lib文件在哪里
g++ dynamictest.cpp -o dynamictest -I./ -L./ -ldynamic
其实,调用共享库有两种方法这只是其中一种比较简单的隐式调用,还有一种显示调用要生命一个外部的类的实例化函数,然后通过这个函数取得类的构造函数,相对来讲比较麻烦,这里就不说了。
动态库的创建很容易也有一定的技巧
如:
dynamic,h文件
class zyx
{
private:
int a;
int b;
public:
zyx(int a,int b);
int sum();
};
dynamic.cpp文件
#include"dynamic.h"
zyx::zyx(int a,int b)
{
this->a = a;
this->b = b;
}
int zyx::sum(int a,int b)
{
return a+b;
}
编写完成以后我们可以编译了
gcc -fpic -shared -o libdynamic.so dynamic.cpp
-fpic指的是生成与位置无关的文件
-shared指连接成共享库
这样我们的共享库就建立起来了不过我们最好把dynamic.h放到usr/include目录下把dynamic.cpp放到usr/lib下。这样有一个好处。就是我们可以让系统自动寻找他们。
2 共享库的使用
我们同样首先些一段测试的代码
#include<iostream>
#include<dynamic.h>
using namespace std;
int main()
{
zyx z(1,2);
cout<<z.sum()<<endl;
return 0;
}
这样我们就可以编译了
g++ dynamictest.cpp -o dynamictest -ldynamic
如果没有将dynamic.h放到usr/include目录下把dynamic.cpp放到usr/lib下要手动指定include lib文件在哪里
g++ dynamictest.cpp -o dynamictest -I./ -L./ -ldynamic
其实,调用共享库有两种方法这只是其中一种比较简单的隐式调用,还有一种显示调用要生命一个外部的类的实例化函数,然后通过这个函数取得类的构造函数,相对来讲比较麻烦,这里就不说了。