开源库应该怎么用?

写代码难免依赖一些外在库,自己发明轮子的时代已经远去了。
但一些开源库变化实在太快太多。
以至于以前自己写好的东西或是老的开源项目代码,过几年拿出来重新make一下,发现不通过了。
原因是依赖库的很多API都不能用了。或者静态库里已经没有这个入口了。

最近编译依赖boost库和ffmpeg库的程序都遇到这问题,实在让人崩溃。
我们自己写程序用到开源库时应该怎么抉择?

  1. 直接把开源库的代码集成到项目中,对于代码量大的库不现实。
  2. 完全不用吧,也不太现实。比如FFMPEG其实是个蛮厉害的东西。
  3. 把库的头文件和库文件打包到项目里,依赖的东西不能与时俱进,似乎也不太好。

对于接口不太稳定但挺强大的库,各位是什么态度?

阅读 5.2k
2 个回答

我觉得以boostffmpeg的口碑,这事儿问题在题主这边的概率比较大

“接口不太稳定但挺强大”这个描述其实是矛盾的,对于第三方库来说,接口稳定、鲁棒性等指标很多时候重要性甚至会凌驾于功能丰富或使用方便(因为后面的问题是可以通过再包一层来解决大半的)。所以如果有多个第三方库可以选择,选稳定的耐操的基本不会有错,大不了你可以自己包一层把API弄得帅一点

最后,用第三方库的时候通过git submodule来管理再合适不过了,linus大魔王对这个问题的理解&提供的解决方案堪称完美

新手上路,请多包涵

是的 你提到的问题确实经常困扰我们。
那么在这儿说一下我的看法。
1、看库的license是哪一种,小心为商业版,及以后发展为商业版。ref http://blog.csdn.net/softwave/article/details/3692429
2、看这个社区是否活跃,如论坛,邮件组是否活跃。如github上 看start 和 fork 数量

这本来就是一个非常困难的事情。

logo
101 新手上路
子站问答
访问
宣传栏