C語言中呼叫靜態庫函式和動態庫函式的方式
阿新 • • 發佈:2018-12-23
C語言中呼叫動態庫函式的兩種方式
方式一.隱式呼叫
將動態庫的相關檔案拷貝到當前目錄下(lib、dll),然後新增以下程式碼,在程式中指定連線庫函式。
注意:第二個引數給出的是引入庫檔案(或稱“匯出庫檔案”),而不是dll。在程式執行過程中,lib將dll中需要用到的函式對映到對應的記憶體空間。
#pragma comment(lib, "./mydll.lib")
方式二.顯示呼叫
需要包含Windows.h的標頭檔案,具體程式碼如下:
需要設定一個控制代碼(此處為void *):在程式設計中,控制代碼是一種特殊的智慧指標 。當一個應用程式要引用其他系統(如資料庫、作業系統)所管理的記憶體塊或物件時,就要使用控制代碼。
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include"fun.h" #include<Windows.h> typedef int(*MYFUNC)(int, int); #pragma comment(lib, "./mydll.dll") int main(int argc, char *argv[]) { HANDLE hDll; //void * hDll = LoadLibrary("mydll.dll"); //匯入動態連結庫 MYFUNC my_add = (MYFUNC)GetProcAddress(hDll, "my_add");//proc程式 int a = my_add(1, 2); printf("%d\n", a); system("pause"); return 0; }
呼叫靜態庫函式
只要在第二個引數位置指定目錄即可。
#pragma comment(lib, "./mydll.lib")