C 的dll庫,採用動態呼叫更好還是靜態呼叫更好?

時間 2021-05-12 11:22:20

1樓:單純的淫

動態 shared library,從英文本面意思很明確了,如果你的dll還要給別的pe模組使用,你就用動態dll,這樣不用所有模組都各自包含乙個dll,大家公用乙個dll就行,反正用的時候loadlibrary一下就行。去如果確實就你自己的程式使用,就靜態吧,打包省事兒點。

2樓:井底的beef

動態鏈結適合多執行程式復用度高,支援小規模改動,開源庫(LGPL/Apache2.0)等場景,缺點是依賴繁雜初學者容易混,版本管理等問題。

靜態鏈結更安全使用簡單,缺點是編譯體積大。

3樓:xchg

一般情況下無所謂的。

但是靜態呼叫的話,如果程式啟動的時候找不到dll和呼叫的函式,就啟動不了了。

舉個實際例子 :為了相容xp,專案最後選擇動態呼叫d2d,如果是xp就用gdi/gdi+渲染,如果是xp以上版本則使用d2d。

4樓:

本人dll小白,但是曾經自己嘗試編譯llvm,不知道是不是不會操作其靜態呼叫導致編譯記憶體無論如何都不夠用,且生成的EXEsample都大得離譜,換成動態的就好了。

5樓:鹹蛋

沒有好不好看情況

dll熱更但是容易被hook 但是拓展性強lib固定沒法hook 但是沒法拓展

一堆dll看著也煩看自己情況吧還是

6樓:開開心心學做人

如果能用靜態呼叫,就直接用靜態的。動態的話,我在寫可配置模組化的乙個專案中用到過,就是讓程式自己去遍歷指定目錄下的全部dll,程式可以在缺少dll的情況下也能正常執行(只是少了一些功能)。

使用C 呼叫C 的dll,這個dll輸出的是個二維陣列,我C 這邊怎麼接收呢?

西井丶 你的方法要out出第一維度多長,第二維度多長,猜測你的方法會返回乙個double DllImport abc.dll private static extern double GetDoubles blahblahblah out intfirst out intsecond 然後你需要 d...

C和C 的適用場合?如何建立C 實現的動態庫?動態庫如何保證向後相容,即二進位制相容性?

馮東 C 和 C 標準都沒有規定二進位制相容。但是這不意味著 C 和 C 在這件事情上是等同的。所謂 標準沒有規定 A 是說 不存在乙個通用的方法保證 A 在所有編譯器和 OS 的組合上都成立 但是它並不會阻止乙個更弱一些的方案,就是 在每個編譯器和 OS 的組合上至少存在乙個方案讓 A 成立 C ...

c ,如何按照不同的要求呼叫標準庫sort函式排序?

Larry Sean sort函式的第三個引數是可選的,可以填你自定義的比較函式,返回bool型別。這個比較函式會當成小於號用。這樣就可以寫三個比較函式分別比較類中不同的值。如果從小到大就用小於號,從大到小就用大於號。至於怎麼設計,怎麼選擇排哪個,判斷一下調不同的函式就好了。好了,道理都講清楚了,加...