?? 19.7.3 根據序號訪問 dll中的導出函數.txt
字號:
19.7.3 根據序號訪問 DLL中的導出函數
前面已經提過,在訪問動態鏈接庫時,除了使用導出函數的名稱以外,還可以根據導出函數的序號來訪問該函數。而 GetProcAddress函數的第二個參數是指向常量的字符指針 ( LPCSTR),那么如何把 int類型的序號轉換為 LPCSTR類型的變量呢?這需要調用本書前面章節已經介紹過的 MAKEINTRESOURCE宏,該宏將會把指定的函數序號轉換為相應的函數名字字符串。通過圖 19.20,可以看到 add函數的序號為 1。因此,修改 Dl1Test程序中調用 GetProcAddress函數的那條代碼,結果就是如例 19-27所示代碼中加灰顯示的那條代碼。
1Jtl19-27
void CDIITestDlg::OnBtnAdd()
1 . // TODO: Add your control notification handler code here
2. H工 NSTANCE hlnst;
3 . hlnst=LoadLibrary ( "Dll3 . dll" ) ;
4 . typedef int (/*_stdca11*/ *ADDPROC) (int a , int b);
5. ADDPROC Add= (ADDPROC) GetProcAddress (hInst , MAKE工 NTRESOURCE(1)) ;
6. if( ! Add)
7. {
8. MessageBox ( "獲取函數地址失敗!" ) ;
"‘ I 729
第 19
9. return;
10. }
11. CString str;
12 . str. Forrnat (" 5+3=宅 d" , Add ( 5 , 3 ) ) ;
13 . MessageBox(str);
Build井運行 DllTest程序,然后單擊【 Add】按鈕,可以發現程序調用成功。
雖然可以利用函數序號來訪問 DLL提供的導出函數,但是在實際編程時,建議讀者還是應該使用函數名稱來訪問 DLL的函數,這樣不容易出錯。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -