windows
静态库是.lib .h
动态库是.lib .dll .h
静态库的.lib 比动态库的.lib 大很多,静态库.lib中已经有代码在里面了,动态库.lib就只有符号链接到.dll。
库的加载方式:
静态库:
1. 在配置属性中添加 XX.lib 和 .lib 的路径, 代码中包含 .h 。就可以了
2. 在程序中加上pragmacomment(lib, "lib路径"),代码中包含 .h 。
动态库:
隐试加载:
1. 在配置属性中添加 XX.lib 和 .lib的路径就可以了,代码中包含 .h 。
2. 在程序中加上pragmacomment(lib, "lib路径"),代码中包含 .h
显示加载:
1. 只需要.h 和 .dll 。使用函数调用的方式获得函数入口地址
我的问题:
1 上面的理解有没有错误的地方? 因为网上看的多,方式多,我就乱了,最后乱放 自己都搞不清楚了
2 动态库的显示加载 .lib 不需要吗?
3 有好的链接说明这个吗? 我需要确定的方式,不然就乱调试容易放错位置
明確載入不需要.lib,這個還跟你的連結方式有關,靜態連結以後,發佈時.dll都不需要了。具體參考書裡面講得很詳細。
動態函式庫的載入分為靜態載入和動態載入:
靜態載入: 即你提到的編譯時加入lib鏈接, 程式碼保護頭檔。 另外,發佈和運行時還是需要dll的
動態載入: 不需要頭檔和lib文件,只需要dll, 透過LoadLibrary和GetProcAddress找到對應函數指針, 當然前提是你知道某個dll中導出了那些函數, 具體可以穀歌下相關內容