如何調用C寫的動態鏈接庫.dll?
假設名為a.dll導出了函數intsum(inta,intb)應這樣調用:HMODULEhLib=LoadLibrary(#34a.dll#34)
//加載a.dll,這里是假設a.dll與程序放在同一目錄typedefint(*funcSum)(int,int)
//定義函數指針funcSumsum=(funcSum)GetProcAddr
如何創建與調用動態鏈接庫?
動態鏈接庫:dll不必被包含在最終的EXE中,EXE文件執行時可以動態地引用和卸載DLL文件。 同時,靜態鏈接庫中不能再包含其他的動態鏈接庫或靜態庫,而動態鏈接庫中可以包含其他的動態或靜態庫。 VC支持的DLL: DLL的編制與具體的編程語言及編譯器無關,動態鏈接庫隨處可見,VC支持三種DLL:非MFC動態庫、MFC規則DLL和MFC擴展DLL。DLL導出函數(或變量、類)可供應用程序調用;DLL內部函數只能在DLL程序內使用,應用程序無法調用它們。 導出函數的聲明 一種在函數聲明類型和函數名之間加上“_declspec(dllexport)”。 另外一種采用模塊定義(.def)文件聲明,需要在庫工程中添加模塊文件,格式如下: LIBRARY庫工程名稱 EXPORTS導出函數名 DLL的調用 一種靜態調用,由編譯系統完成對DLL的加載和應用程序結束時DLL的卸載。 另外一種動態調用,由編程者用API函數加載和卸載DLL(DLL加載—DLL函數地址獲取—DLL釋放)。 所有庫工程編譯時必須Release Build—setactiveconfiguration—選擇庫工程的release 示例: 一、函數