python包装的C ++插件系统失败

时间:2019-04-25 19:31:13

标签: python c++

我有一个用pybind11包装的C ++实现的解释器。作为解释程序启动的一部分,它将一系列共享库加载到C ++ unordered_map中,该函数用作函数查找表(FLT)。当解释器遇到函数调用时,它将命中FLT并执行与该函数的字符串名称关联的代码。

当解释器在Python外部运行 时,它将正确执行脚本。当解释器运行 inside python时,它失败并崩溃,原因是说在FLT中不存在在解释器的共享对象中定义的函数。我不知道为什么会这样。但是我给人留下的印象是,Python打破了某些东西,因为在Python之外,事情按预期运行。

我想重点介绍一下我的运行时环境。

  • LD_LIBRARY_PATH设置为包含共享库的目录
  • 当共享库为LD_PRELOAD时,解释器在内部 python中工作。
  • 解释程序生成的日志声称共享库已正确加载;入侵解释器以打印出FLT中的哪些函数,表明共享库正在正确加载,但是共享库中应填充FLT的函数不存在。

0 个答案:

没有答案