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

不同模块间抛出的对象异常为什么捕获不到???

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

    本文导语:  现在在LINUX下,有一个可执行文件和一个共享库文件,为什么一个模块中抛出的对象异常,在另外一个模块中捕获不到??? 但是,在同一个模块中是可以捕获不到的,这是为什么原因? (注:抛出的是对象,但如...

现在在LINUX下,有一个可执行文件和一个共享库文件,为什么一个模块中抛出的对象异常,在另外一个模块中捕获不到???
但是,在同一个模块中是可以捕获不到的,这是为什么原因?
(注:抛出的是对象,但如果抛出字符串等其他一些基本类型,在不同模块间也是能捕获到的)

|
首先,你在main里面如何装载共享库的函数?请贴一下你的代码。

我写了一个简单的测试,可以得到异常,不知是否跟你的情况一样:
== a.h ==
class B {
public:
  std::string reason() {
    return "Except: This is Bn";
  }
};

== b.cpp ==
#include 
#include "a.h"

int test() {
  B b;
  throw b;

  return 0;
}
============
#g++ -shared -o b.so -ldl b.cpp
#strings b.so|grep test
#_Z4testv
==== a.cpp ====
#include 
#include "dlfcn.h"
#include "a.h"

typedef int (*FUNC)(void);
FUNC test;

int main() {
  void* dp = dlopen("./b.so", RTLD_LAZY);
  if(dp == NULL) {
    std::cout 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python异常模块traceback用法举例
  • Linux中一个模块中的函数如何被另一个模块调用?
  • Python的MySQLdb模块安装
  • insmod模块无显示,但rmmod模块有显示
  • *******是不是对内核模块编程然后再重新编译内核就可以把此模块整合到linux系统中
  • 传感器模块、gprs模块如何和我的2440开发板相连
  • 大侠帮忙!模块调试(非内核模块)
  • 想删除内核中的一个模块,输入命令后,系统提示该模块不存在。但是我lsmod时,它在/proc/modules中。求解。
  • 驱动模块可以编入内核,想单独编译成模块,makefile怎么写?
  • 同机装有Windows和Linux两套系统(先装Win后装Linux),如何使计算机使用Windows的启动模块而不是Linux的启动模块?
  • 自己写的内核模块与用户模块通信(交互)
  • 如何停止模块运行
  • 弱弱的问一个关于"模块化编程"的问题
  • 模块的安装求助
  • 模块依赖小问题,请各位大大帮忙
  • 关于rsync同步模块配置问题
  • 自定义内核模块禁止启动图形界面
  • 使用非root用户加载模块出错
  • 如何想向内核添家一个自定义的模块?
  • 关于LINUX内核模块的按需卸载及安装
  • 驱动模块断电重加载问题


  • 站内导航:


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

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

    浙ICP备11055608号-3