在程序使用Dll有兩個(gè)加載方式,一種是動(dòng)態(tài)方式,就是LoadLibrary載入Dll,然后用GetProcAddress來加載需要使用的Dll函數(shù)。另一種就是靜態(tài)連接方式,將dll生成的lib,加入到工程中,然后就可以很方便的調(diào)用。
我們知道很多dll在發(fā)布時(shí)不提供lib,沒有l(wèi)ib我們就不能靜態(tài)的加載,所以得想辦法來生成一個(gè)lib,在vs2005中有這樣的一個(gè)命令
不過我們還需要一個(gè)def文件,怎樣來獲得一個(gè)def文件哪?
我們知道def是一個(gè)庫導(dǎo)出文件 簡單的格式是:EXPORTS 和 一些導(dǎo)出函數(shù)
我們可以用vc6自帶的一個(gè)depends來查看dll中有哪些導(dǎo)出函數(shù),來手動(dòng)做一個(gè).def文件
將xxx.dll和xxx.def,放到一個(gè)文件夾中,啟動(dòng)“Visual Studio 2005 命令提示”
將工作目錄切換到放有xxx.dll和xxx.def的文件夾中輸入:
lib /def:xxx.def /MACHINE:x86
這樣將會(huì)產(chǎn)生一個(gè)xxx.lib了,將此lib文件和dll文件拷到工程中,就可以進(jìn)行靜態(tài)鏈接了