CodeBlocks載入動態動態庫
阿新 • • 發佈:2019-01-01
CodeBlocks新建一個Dynamic Link Library工程,工程名稱叫做:dll,程式碼已由嚮導自己生成好了
這裡函式就不寫了
編譯該工程,Ctrl+F9,完畢,關閉工程
再新建一個Project,名稱為cbp,選擇Console application,完畢
CodeBlocks比較特殊,如果呼叫已編譯好的dll檔案,需要使用到兩個標頭檔案windows.h和winbase.h,注意:windows.h一定要宣告在winbase.h之前,否則會提示winbase.h中的DWORD未定義
把之前dll.dll生成的標頭檔案包含進去,該標頭檔案中將dll編譯的程式碼設定成以標準C的形式輸出,這樣比較安全。這裡我使用的是#include "\..\temp\dll\main.h"
接下來定義一個函式名為指標的宣告,表明這是一個指標來自外部的函式
這裡我使用的是typedef void(WINAPI *pfunction)(const LPCSTR sometext);
然後為函式指標宣告一個例項,再宣告一個控制代碼,用來存放庫檔案
不說了直接上程式碼:
#include <windows.h> #include <winbase.h> #include <stdio.h> #include "\..\temp\dll\main.h" typedef void(WINAPI *pfunction)(const LPCSTR sometext); int main(int argc,char *argv[]) { pfunction pfu=NULL; HMODULE hlib=NULL; hlib=LoadLibrary("dll.dll"); pfu=(pfunction)GetProcAddress(hlib,"SomeFunction"); SomeFunction("DLL呼叫成功!"); SomeFunction(*argv); FreeLibrary(hlib); return 0; }