当前位置: 技术问答>linux和unix
用c++写动态库,其他模块怎么调用????分不够还可以加
来源: 互联网 发布时间:2015-03-31
本文导语: up | hehe,我来详细的告诉你如何在linux下编写动态库,以及如何使用它.不过你一定得给我分噢:) 在linux下编写动态链接库的步骤: 1.编写库的头文件和源文件. 2.把所有涉及到的源文件用如下方式编...
up
|
hehe,我来详细的告诉你如何在linux下编写动态库,以及如何使用它.不过你一定得给我分噢:)
在linux下编写动态链接库的步骤:
1.编写库的头文件和源文件.
2.把所有涉及到的源文件用如下方式编译为目标文件:
g++/gcc -g -c -fPIC -o library1.o library1.cpp
g++/gcc -g -c -fPIC -o library2.o library2.cpp
......
......
3.把所有的目标文件链接为动态库:
g++/gcc -g -shared -Wl,-soname,lib***.so,-o lib***.so.1.0.0, library1.o library2.o .... -lc
4.建立一个库名链接
ln -s lib***.so.1.0.0 lib***.so
现在你就可以引用库了.下面我分别给出简单例子告诉你如何动态和静态使用动态库:
假如你的应用程序源代码叫testlib.cpp
采用如下方式编译:
g++ -g -o testlib testlib.cpp -ldl
////////这个例子告诉你如何动态的调用.so库
testlib.cpp
#include
#include
#include ...
int main()
{
void *handle=NULL;
//define a pointer which will point to the function in the lib you want to use.
YourFuntionType (*pFunc)(YourFunctionPerameterList........);
//open the lib you want to use.
handle=dlopen("/../../../yourlib.so",RTLD_LAZY);
if(handle==NULL)
{
cout
在linux下编写动态链接库的步骤:
1.编写库的头文件和源文件.
2.把所有涉及到的源文件用如下方式编译为目标文件:
g++/gcc -g -c -fPIC -o library1.o library1.cpp
g++/gcc -g -c -fPIC -o library2.o library2.cpp
......
......
3.把所有的目标文件链接为动态库:
g++/gcc -g -shared -Wl,-soname,lib***.so,-o lib***.so.1.0.0, library1.o library2.o .... -lc
4.建立一个库名链接
ln -s lib***.so.1.0.0 lib***.so
现在你就可以引用库了.下面我分别给出简单例子告诉你如何动态和静态使用动态库:
假如你的应用程序源代码叫testlib.cpp
采用如下方式编译:
g++ -g -o testlib testlib.cpp -ldl
////////这个例子告诉你如何动态的调用.so库
testlib.cpp
#include
#include
#include ...
int main()
{
void *handle=NULL;
//define a pointer which will point to the function in the lib you want to use.
YourFuntionType (*pFunc)(YourFunctionPerameterList........);
//open the lib you want to use.
handle=dlopen("/../../../yourlib.so",RTLD_LAZY);
if(handle==NULL)
{
cout