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

Linux下创建和调用动态链接库(.so)相关问题。高手进!

    来源: 互联网  发布时间:2016-02-06

    本文导语:  简单开始提问: 1.生成.so时候 -fpic 的作用和必要性?我加上和去掉在隐式调用下没有区别 2.  z=(double (*)(double,double))dlsym((char *)dp,"pow"); //pow函数  可以调用成功。 这个和网上到处搜索到的  pStrlenFun = dlsym(pdlHandl...

简单开始提问:
1.生成.so时候 -fpic 的作用和必要性?我加上和去掉在隐式调用下没有区别
2.  z=(double (*)(double,double))dlsym((char *)dp,"pow"); //pow函数
 可以调用成功。
这个和网上到处搜索到的
 pStrlenFun = dlsym(pdlHandle, "Strlen"); 
是不一样的。
网上的这样调用会出错。为什么都还这么写?是不是编译器,平台之类不同???
3.
double GetTest(double asin)
{
return asin/2;
}
这样编译生成的.so可以隐式调用成功,但是显示调用不行,可以dlopen,但是dlsym error:undefined symbol: GetTest
这是什么原因?
但是调用系统提供的pow可以成功编译。(man 里面提供的cos雷同例子)

4.如何正确的编写.so文件?(网上搜来搜去就那几种,无法正确编译成功。连dlsym我都是搞了好久才搞对。)

dlopen都没有报错,就是dlsym的时候有问题,undefined symbol
以下是我编译的时候的参数:
g++ test1.cpp -shared -o  test1.so 
g++ -rdynamic -o myso myso.cpp test1.so -ldl

|
C++的命名约定问题

函数加上 extern "C" 就好了

|
dlopen正常dlsym也应该正常诶
2,因为c和c++对于类型要求的严格程度不同,pStrlenFun = dlsym(pdlHandle, "Strlen"); 用c编译器可以成功c++编译器会要求类型.
3,4的问题都是你没有指定动态库的路径的原因

|
g++ test1.cpp -fpic -shared -o test1.so
调用包含头文件,不需要那些动态库的函数调用

    
 
 

您可能感兴趣的文章:

  • Linux添加系统调用时如何调用C语言库函数
  • linux中为什么系统调用比普通函数调用更费时间?
  • 为什么我的BEAN 在WIN2000中调用没有问题,但在LINUX中调用有问题
  • 如何在LINUX下用一个普通文件调用一个自己编写的调用系统的文件
  • LINUX下系统调用是不能中断的,要怎么改造成可以中断系统调用?
  • 请问linux中的系统调用号是如何跟系统调用表对应起来的
  • 新手:Linux下使用第三方C库(openssl),是调用.so文件还是直接调用.h文件?
  • linux系统调用问题
  • 我如何调用 内核函数 /linux/fs 里面的内核 函数:比如 自己的程序调用 ext3_delete_inode
  • 关于Linux系统调用的问题!
  • 请教在linux中如何动态的增加一个系统调用(模块中)
  • Linux环境下,如何一个驱动中调用另外一个驱动
  • linux:怎么在驱动中调用IIC驱动?
  • linux下在Qt中调用flash播放器
  • 如何达到我这种linux下的系统调用效果
  • window下能否调用linux的静态库(a文件)?
  • Qt下使用Linux系统调用?
  • linux3.0.0.12内核怎么添加系统调用
  • C库函数和linux系统调用区别
  • 请问各位linux开发大虾,linux下有类似VC中depends的工具可以查看文件调用了哪些so文件吗?
  • 菜鸟在c盘装了win2000,想在剩下的空间装Red Hat Enterprise Linux 3,在创建linux分区的时候,不知道都创建什么分区??我知道要创建一个
  • linux如何创建一个共享内存 可以mount 可以创建目录之类 跟硬盘分区一样
  • 急!linux下mysql的创建用户组和创建用户命令不能生效啊????
  • linux普通用户创建文件或目录
  • Linux创建进程的问题,请高手帮忙解答一下?
  • Linux 代理 一个客户端来就创建一个连接
  • 菜鸟问题:怎样创建一个对所有文件只有只读权限的linux帐号,谢谢!
  • linux下如何创建一个目录?
  • linux 用户创建
  • linux下如何创建一个user 和 group?
  • 在LINUX的虚拟文件系统下如何创建一个文件?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 关于我对linux高手用yum,非高手用源码的理由
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • Linux安装问题 (不是Linux的高手,很难回答的 @_@ )
  • red hat linux与windows 2000 server相连,2000 关机后linux自动启动!问高手怎么回事?
  • 请教linux高手,在Linux
  • Linux下自动执行命令的问题,哪位Linux高手帮帮我.
  • 我一直用WINDOWS,想转到Linux/Unix,各位Linux/Unix高手可以介绍点吗?
  • 求高手指点,arm-linux
  • 请linux高手指教
  • 各位高手:光盘安装Linux9出现问题,请指教!
  • 初学LINUX!请高手指条明路!
  • 找linux高手帮个忙~回报为你几个G的空间免费长期使用...
  • Linux 高手请进!!!!
  • 装linux遇到问题,有高手在线帮忙吗?请发信息给我
  • 大家是怎么成为linux高手的?
  • 请高手推荐Linux入门方面的资源(网站或电子书)
  • 我刚开始学linux,现在想装一个lumaQQ,请高手说一下详细过程!
  • 关于在VMware下安装linux,请高手指点,先谢过!
  • 怎样让linux从硬盘启动?求高手帮忙
  • 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
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


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

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

    浙ICP备11055608号-3