静态lib在交叉工程中经常会出现因为lib不是最新的,带来很多麻烦,之前遇到的一个问题是,在工程A里面修改了工程B里面的文件,但是B工程没有编译,这样工程A里面用到工程B里面的lib是旧的,这样会造成一种情况是,你在工程A里面调试程序的时候,发现明明是可以单步调试到某语句的,但是实际上却执行到前面或者后面,这是因为这个程序语句没有在lib里面更新的缘故.
使用dll的好处:
1)便于分工开发,2)便于后期维护和扩展,3)编译生成的版本少,一般只有调试和发布版本的dll4)便于封装代码.相对而言,静态lib每次都要编译才生成,不像dll一样可以进行二进制更新.并且dll更新版本以后不需要再次编译,只要给出接口,更新实现就可以更新dll相关版本了.
一般地在引擎中都强调多使用dll,将引擎各个模块写成dll的形式,这样方便以后开发和后期维护,不过dll的一个难办的地方是:除非你给出你要输出的接口,否则你不能调用dll里面的任何东西,这样就要在生成dll的时候,给出相关输出函数接口,方便提供给client使用.