__android_log_print不能从库中打印

时间:2014-10-01 15:18:03

标签: android c++ logging android-ndk

我有一个NDK应用程序,它由三部分组成(共享库):

  • 一个基础库,其中包含一些日志记录功能,这些函数调用__android_log_print
  • 我的游戏引擎库,它从基础库中调用日志记录功能
  • 主模块,它从基础库调用日志记录功能,以及从生成日志输出的游戏引擎中调用函数

Everything编译并成功运行,但即使我知道正在调用__android_log_print,我也看不到任何日志输出(我在行上放置一个断言以使其中止以确保)。

如果我直接从主模块调用__android_log_print,它可以工作。如果我从Java填充活动中调用日志记录语句,它也可以工作,但通过我的库调用什么都不会打印。

这会导致什么? Android中是否存在阻止从库代码中记录的内容?

编辑:看起来__android_log_print被某种方式重定向到stdout / stderr - 我不知道这可能是怎么回事?我使用SDL2是否相关

1 个答案:

答案 0 :(得分:0)

哈!所以事实证明,由于一系列涉及符号链接的错误,一个旧的头文件以及我轻率地认为是我的断言的巧合崩溃,我甚至没有调用__android_log_print!

我的游戏引擎正在拾取一个旧的头文件,其中是日志代码的内联实现(之后已被移动到源文件中)。然后将其编译到游戏引擎库中,从而忽略了基础库中的正确实现。

如果我还没有开始在游戏引擎库中寻找未解决的符号,我就不会想到这一点,所以感谢那个fadden! :)