一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

VC++ DLL調(diào)式方法?。ㄞD(zhuǎn))

 匯英四方 2014-02-19

動(dòng)態(tài)鏈接庫(kù)DLL同靜態(tài)Lib鏈接的區(qū)別在于:程序在編譯成可執(zhí)行文件時(shí)會(huì)把靜態(tài)鏈接庫(kù)中的程序拷進(jìn)可執(zhí)行文件中,所以Lib文件是不用同可執(zhí)行 文件一同發(fā)布的。而鏈接到動(dòng)態(tài)庫(kù)DLL中時(shí)要通過(guò)一個(gè)Lib文件,Lib文件保存了函數(shù)或類在DLL中的入口地址,可執(zhí)行文件中相應(yīng)存放的也是函數(shù)地址, 所以DLLLib要同可執(zhí)行文件一起發(fā)布。


1. VC
中支持的DLL種類:Non MFC DLL,Regular DLL,Exetension DLL

Non MFC DLL 
MFC動(dòng)態(tài)鏈接庫(kù):不使用MFC類庫(kù)結(jié)構(gòu),直接用C寫(xiě),輸出函數(shù)用標(biāo)準(zhǔn)C接口,能被非MFC程序調(diào)用

Regular DLL 
正則動(dòng)態(tài)鏈接庫(kù):使用MFC編寫(xiě),源文件中有繼承自CWinApp的類,只能被MFC調(diào)用;正則Dll又分成靜態(tài)連接到MFC的和動(dòng)態(tài)鏈接到MFC的,在創(chuàng)建時(shí)會(huì)看到。

Extension DLL 
擴(kuò)展動(dòng)態(tài)鏈接庫(kù):實(shí)現(xiàn)從MFC繼承下來(lái)的新類,輸出MFC新子類,只能被MFC調(diào)用

2.實(shí)例如下:(VC++6.0)

在新建菜單中選擇新建工程Win32 Dynamic Link Library,選擇任何一種都可以,我以empty project為例,加入自己的函數(shù)MyFunction

 

  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. extern "C"  _declspec(dllexport) int MyFunction();  
  5. BOOL APIENTRY DllMain( HANDLE hModule,   
  6.                        DWORD  ul_reason_for_call,   
  7.                        LPVOID lpReserved  
  8.       )  
  9. {  
  10.  switch (ul_reason_for_call)//調(diào)用原因   
  11.  {   
  12.  case DLL_PROCESS_ATTACH://進(jìn)程被調(diào)用  
  13.   cout << "process attach!" << endl;  
  14.   break;  
  15.  case DLL_THREAD_ATTACH://線程被調(diào)用   
  16.   cout << "thread attach!" << endl;  
  17.   break;  
  18.  case DLL_THREAD_DETACH://進(jìn)程被停止   
  19.   cout << "thread detach!" << endl;  
  20.   break;  
  21.  case DLL_PROCESS_DETACH://線程被停止   
  22.   cout << "process detach!" << endl;  
  23.   break;  
  24.     }   
  25.     return TRUE;   
  26.   
  27. }  
  28. int  MyFunction()//自定函數(shù)   
  29. {   
  30.  return 8;   
  31. }   

 

編譯后即可生成DLL文件和相應(yīng)的Lib文件 

調(diào)用DLL的方法:顯式調(diào)用 隱式調(diào)用

顯調(diào):用LoadLibraryAfxLoadLibrary顯式調(diào)入Dll,再用GetProcAddress引入函數(shù),最后用FreeLibraryAfxFreeLibrary(參數(shù)是AfxLoadLibrary返回的句柄)釋放Dll

隱調(diào):需要加入動(dòng)態(tài)鏈接庫(kù)Lib文件,不需要調(diào)用LoadLibrayrAfxLoadLibrary

在同一個(gè)工作區(qū)中,添加一個(gè)testdll工程,建立一個(gè)控制臺(tái)的程序做的測(cè)試。。

  1. #include "stdafx.h"  
  2. #include <stdio.h>  
  3. #pragma comment(lib,"mydll.lib") //引入Dll.lib,也可在設(shè)置中l(wèi)ink   
  4. extern "C" _declspec(dllimport) int MyFunction();//導(dǎo)入MyFunction,也可放在頭文件中,如果dll中有加extern,導(dǎo)入時(shí)也要加extern   
  5.   
  6. int main(int argc, char* argv[])  
  7. {  
  8.     int result=MyFunction();   
  9.     printf("The number is %d /r/n",result);   
  10.     return 0;   
  11.   
  12. }  

測(cè)試代碼如上所寫(xiě)。

 

設(shè)置testdll工程為當(dāng)前活動(dòng)工程,在mydll工程的函數(shù)里面,添加一個(gè)斷點(diǎn)F9,

在調(diào)試時(shí),就能進(jìn)入到dll中單步跟蹤了!

 

以上內(nèi)容如有不懂,可以留言!中間如果有錯(cuò)歡迎大家指出來(lái)!

轉(zhuǎn)自:http://blog.csdn.net/shen_001/article/details/5616376

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    亚洲在线观看福利视频| 国产亚洲不卡一区二区| 91欧美日韩国产在线观看| 日本99精品在线观看| 亚洲精品蜜桃在线观看| 国产又大又硬又粗又黄| 日本一二三区不卡免费| av免费视屏在线观看| 日本高清不卡一二三区| 美国女大兵激情豪放视频播放| 日韩一本不卡在线观看| 黄色片一区二区在线观看| 千仞雪下面好爽好紧好湿全文| 国产一区二区三区免费福利| 国产精品国产亚洲区久久| 国产精品一区二区丝袜| 黄片在线免费看日韩欧美| 国内尹人香蕉综合在线| 国产一区二区不卡在线视频| 欧美又大又黄刺激视频| 国产成人精品在线一区二区三区| 欧美成人黄色一区二区三区| 男人和女人草逼免费视频| 亚洲男人的天堂就去爱| 欧美精品久久99九九| 国产原创中文av在线播放| 黄片免费在线观看日韩| 欧美日韩国产一级91| 欧美一级特黄大片做受大屁股| 亚洲国产av在线观看一区| 老司机激情五月天在线不卡| 国产一区欧美午夜福利| 亚洲最新中文字幕在线视频| 国产原创激情一区二区三区| av免费视屏在线观看| 人妻精品一区二区三区视频免精| 欧美成人高清在线播放| 国产又粗又猛又爽又黄| 嫩草国产福利视频一区二区| 成人午夜视频精品一区| 国产成人一区二区三区久久|