靜態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使用.