当前位置:  技术问答>linux和unix

linux下有没有类似windows下动态链接库(dll)的东西?

    来源: 互联网  发布时间:2015-09-09

    本文导语:  哪里有这方面资料? | Linux下也有Windows中DLL类似的东西,其文件名一般以.so为后缀, 还可能后面跟上一个外部版本号,例如:libc.so, libxml.so.1.8.17。 最简单的生成so的方式如下: gcc -o libmyfun...

哪里有这方面资料?

|
Linux下也有Windows中DLL类似的东西,其文件名一般以.so为后缀,
还可能后面跟上一个外部版本号,例如:libc.so, libxml.so.1.8.17。
最简单的生成so的方式如下:
gcc -o libmyfunc.so myfunc.c -shared
so也是可以在程序运行的过程中加载的,就想Windows下使用LoadLibrary
那样,不过Unix(包括Linux)下一般使用dlopen类函数。详细可man dlopen查查。


在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

    
 
 

您可能感兴趣的文章:

  • c在linux下有ncursor,java在linux下有什么?
  • 请问LINUX下有没有跟在windows下一样的hash_map使用?比如VS2005下有微软实现的hash_map.
  • linux 下有超级终端吗?
  • 请问Linux下有没有类似Windows光盘Autorun的功能?
  • linux下有什么好用的数据库设计工具?
  • Linux下有哪些可视化软件开发Linux下的应用软件和驱动程序
  • 请问各位linux开发大虾,linux下有类似VC中depends的工具可以查看文件调用了哪些so文件吗? iis7站长之家
  • Linux下有什么JAVA的开发工具?
  • 请问Linux下有没有类似audio compression manager的东东,急,急,急!!!
  • linux下有类似ADS的IDE吗
  • linux下有没有ghost这类软件?
  • Linux下有不有这样的软件
  • 请教LINUX下有哪些商业的软件部署软件?
  • linux下有仪表控件的库吗?有的话请告诉我另开分贴给你
  • linux下有单步调试的工具吗?
  • 请问在linux/unix下有没有象GetKeyboardState()一样对键盘状态进行控制的函数?
  • Linux下有哪些IDE?请开发者推荐!
  • linux下有没有统计文本文件中字符串出现次数的命令?
  • 在Linux下有没有,象"金山词霸"那样的,翻译软件...急需,谢谢
  • 在linux下有清屏的命令吗?如果没有,怎么用shell script或者c实现?
  • 请问Linux字下有没有类似于Dos下Turbo C的集成环境编辑器?如果没有,有一个类似Dos的Edit编辑器都不错,至少有下拉菜单.
  • 红旗LINUX 如何进入类似于DOS的命令界面啊
  • 请问各位linux开发大虾,linux下有类似VC中depends的工具可以查看文件调用了哪些so文件吗?
  • Linux有没有类似bat文件,如何编写。
  • linux下C有没有类似于windows的资源处理办法
  • Linux有类似Windows的注册表的东西吗?
  • 服务器是linux系统,windows怎么共享上网?有没有类似sygate之类的软件?
  • 请问Linux中提供类似于Win2000的Dfs功能么?
  • 有没有类似msdn的linux的帮助文件
  • Linux下有类似于Windows的ipconfig命令吗?
  • unix/linux api有类似msdn的手册么?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Windows和Linux下C++类成员方法作为线程函数方法介绍
  • x-windows如何安装在linux(rdehat9)上面呢,是不是x-windows也分windows和linux版本的吗?
  • tar.xz如何解压:linux和windows下tar.xz解压命令介绍
  • windows 和linux双系统,重装windows后,无法启动linux?
  • MTU介绍以及在windows和linux下怎么设置MTU值
  • linux和windows串口问题!?linux向windows端发送,第一次write正常,继续write,windows接收到的就变成乱码了,这是什么原因??????
  • Linux和windows下用mysql c++ library操作Mysql数据库
  • windows,linux如何实现文件共享(windows,linux安在同一台机)?
  • 请问windows 2000怎么访问linux?我要从linux下拷文件到windows下
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Windows2000和Linux双操作系统,Linux系统有问题,我直接把Linux分区删除后,Windows2000进不去了,怎么办???
  • 晕哦,刚在windows下用虚拟机装个linux,不知道怎么把windows下的文件复制到linux里????
  • 用linux(服)windows(客)传输文件,windows端可以,linux端不可以,怎么回事???
  • 同机装有Windows和Linux两套系统(先装Win后装Linux),如何使计算机使用Windows的启动模块而不是Linux的启动模块?
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • 域内共享的问题?Linux机器可以访问Window机器,但是Window机器不能访问Linux机器?
  • 怎么在Linux下改windows系统文件啊,我把windows的BOOT.INI改了,windows启动不了
  • 请问如何在WINDOWS中访问linux下的文件,并把Windows下的文件复制到linux下的分区中
  • 为什么虚拟机VM里的linux ping不通window 7,但是window 7可以ping通linux?
  • ■■有关RH Linux的在线更新(OnLine Update)?Linux下有没有如Windows下的Windows Update一样的工具呀,可下载补丁和Update组件?
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3