如何跟踪 C++ 库的加载过程?
Posted
技术标签:
【中文标题】如何跟踪 C++ 库的加载过程?【英文标题】:How to trace the loading process of C++ libraries? 【发布时间】:2015-12-01 07:33:33 【问题描述】:我正在开发一个使用 libvlc 库来提供视频播放功能的小型 qt 应用程序,但我遇到的问题是在播放启动时第一次加载所有库需要很多时间.
那么问题来了 - 是否有能力跟踪加载库的过程? (最好向用户显示某种“正在加载...”窗口。)
【问题讨论】:
如何加载库?如果它们在编译期间被链接,我认为没有办法做到这一点(它将由 OS 运行时链接器自动加载);但如果您通过 QtPlugins 执行此操作,则可能有通过 QPluginLoader 的方法。 我动态链接它们,但认为有一种方法可以注入一些加载它的方法并“制作一些魔法”显示加载窗口。 【参考方案1】:您可以简单地在程序启动期间触发加载这些库,而不是监控加载。这将使您的用户看不到它,因为人们希望程序无论如何都需要一两秒钟才能加载。
一个简单的方法是在程序启动时调用libvlc_new()
。
【讨论】:
哇,非常棒的解决方案,但我不会在开始时完成,而是在加载的那一刻,因为这个函数是阻塞的(希望调试器不会撒谎)。以上是关于如何跟踪 C++ 库的加载过程?的主要内容,如果未能解决你的问题,请参考以下文章
Android 分析Native库的加载过程及x86系统运行arm库的原理