我正在学习ffmpeg项目
在一个示例程序中:
/* must be called before using avcodec lib */
avcodec_init();
/* register all the codecs */
avcodec_register_all();
我想知道这两个功能在内部完成了什么 我使用gdb来查看已创建的全局变量,但找不到任何变量
实际上我的问题并不是特定于ffmpeg图书馆 这是关于使用外部C库 在那些库中应该创建一些变量,我该如何找到这些变量?
我正在使用Netbeans作为IDE
提前致谢
答案 0 :(得分:3)
如果它们是外部库,则根本不可能看到变量。一个好的库无论如何都不会有很多全局可访问的变量。他们中的大多数将是静态的或本地的,然后你无法访问它们,所以它们对你来说并不重要。
文档,如果有任何好处,应声明您可以访问和使用的所有变量,函数等。头文件也是一个非常好的信息来源,虽然他们并不总是告诉你如何使用你看到的。而且,就像在这种情况下,如果您可以获得源代码,这也是一个很好的信息来源,虽然可能需要很长时间才能开始透视,如果库是广泛的。
<强>加成强>
如果使用调试信息编译库,并且您拥有源,则可能能够看到它的工作原理并检查各种变量(本地,静态,全局)。从您隐藏信息主要不是为了保密,它是这样做的,因此您无法访问私人信息,并且(可能无意中)损害了它保留的私有数据的完整性。正如我在评论中所说,这称为封装,是IMO,一种良好的编程(tm)实践。
答案 1 :(得分:1)
我相信,您可以获取源代码并亲自查看吗?