文章轉(zhuǎn)載自:http://blog.csdn.net/antoinette/article/details/2112671
導(dǎo)讀: 聲明導(dǎo)出函數(shù): DLL內(nèi)的函數(shù)分兩種:只在DLL內(nèi)部調(diào)用的、DLL導(dǎo)出函數(shù)——供應(yīng)用程序調(diào)用 聲明導(dǎo)出函數(shù)兩種方法: (1)在函數(shù)聲明中加上extern"C" int _declspec(dllexport)add(int x,int y);//一定要加上extern "C" (2)采用模塊定義(.def)文件聲明。.def文件為鏈接器提供了有關(guān)被鏈接程序的導(dǎo)出、屬性和其他信息。 MFC AppWizard為MFC DLL創(chuàng)建一個.def文件,而Win32 DLL,用戶必須自己創(chuàng)建.def文件。 .def定義示例代碼如下: dll.def:導(dǎo)出DLL函數(shù) LIBRARY dllTest DESCRIPTION "math" EXPORTS GlobleVar DATA add @1 sub @2 .def文件的規(guī)則為: (1)LIBRARY語句指出DLL的名字 (2)EXPORTS語句后列出一系列函數(shù)名稱。可以在導(dǎo)出函數(shù)后加@n,表示函數(shù)序號。 (3);表示注釋,且注釋不能和語句共享一行。 (4)可選部分——DESCRIPTION語句,原來描述DLL的用途。 (5)變量名 DATA:導(dǎo)出全局變量 DLL的調(diào)用(加載)方式: (1)動態(tài)調(diào)用(顯式鏈接) LoadLibrary() GetProcAddress() FreeLibrary() (2)靜態(tài)調(diào)用(隱式鏈接) 由編譯系統(tǒng)完成對DLL的加載和應(yīng)用程序結(jié)束時對DLL的卸載。需要做兩個工作: a:將編譯dll工程所得的.lib和.dll文件放入調(diào)用dll工程所在的路徑。 包含.lib文件:#pragma comment(lib,"dllTest.lib") or project->setting->link->... b:聲明導(dǎo)入函數(shù),extern "C" int _declspec(dllimport) add(int x,int y)中的_declspec(dllimport)//must add extern "C" Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1881088 本文轉(zhuǎn)自 http://blog.csdn.net/blueshelly/archive/2007/11/12/1881088.aspx