亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

淺析C/C++中動態鏈接庫的創建和調用

2020-01-26 14:36:06
字體:
來源:轉載
供稿:網友

DLL 有助于共享數據和資源。多個應用程序可同時訪問內存中單個DLL 副本的內容。DLL 是一個包含可由多個程序同時使用的代碼和數據的庫。下面為你介紹C/C++中動態鏈接庫的創建和調用。

動態連接庫的創建步驟:

創建Dll有兩種方式。

一、創建Non-MFC DLL動態鏈接庫

1、打開File ―> New ―> Project選項,選擇Win32 Dynamic-Link Library ―>sample project ―>工程名:DllDemo

2、新建一個。h文件DllDemo.h

#ifdef DllDemo_EXPORTS  #define DllAPI __declspec(dllimport)  #else  #define DllAPI __declspec(dllexport) extern "C" //原樣編譯  {   DllAPI int __stdcall Max(int a,int b); //__stdcall使非C/C++語言內能夠調用API  } #endif

3、在DllDemo.cpp文件中導入DllDemo.h文件,并實現Max(int,int)函數 

#include "DllDemo.h"DllAPI int __stdcall Max(int a,int b)  {    if(a==b)       return NULL;     else if(a>b)       return a;     else       return b;  }

4、編譯程序生成動態連接庫

二、用.def文件創建動態連接庫DllDemo.dll

1、刪除DllDemo工程中的DllDemo.h文件。

2、在DllDemo.cpp文件頭,刪除 #include DllDemo.h語句。

3、向該工程中加入一個文本文件,命名為DllDemo.def并寫入如下語句:

1.LIBRARY MyDll 
2.EXPORTS 
3.Max@1

4、編譯程序生成動態連接庫。

動態鏈接的調用步驟:

一、隱式調用

1、建立DllCnslTest工程

2、將文件DllDemo.dll、DllDemo.lib拷貝到DllCnslTest工程所在的目錄

3、在DllCnslTest.h中添加如下語句:

#define DllAPI __declspec(dllimport)  #pragma comment(lib,"DllDemo.lib") //在編輯器link時,鏈接到DllDemo.lib文件  extern "C"  {  DllAPI int __stdcall Max(int a,int b);  }

4、在DllCnslTest.cpp文件中添加如下語句: #include "DllCnslTest.h"http://或者 #include "DllDemo.h"

void main()  {     int value;     value = Max(2,9);     printf("The Max value is %d/n",value);  }

5、編譯并生成應用程序DllCnslTest.exe

二、顯式調用

1、建立DllWinTest工程。

2、將文件DllDemo.dll拷貝到DllWinTest工程所在的目錄或Windows系統目錄下。

3、用vc/bin下的Dumpbin.exe的小程序,查看DLL文件(DllDemo.dll)中的函數結構。

4、使用類型定義關鍵字typedef,定義指向和DLL中相同的函數原型指針。

例:

//需要引入頭文件 windows.h最好在最前面,否則可能會出錯  不需要windef.h 否則會報錯 #include <windows.h>#include <iostream> 
typedef int(__stdcall *lpMax)(int a,int b); //此語句可以放在.h文件中 必須聲明為__stdcall類型 否則出錯

5、通過LoadLibray()將DLL加載到當前的應用程序中并返回當前DLL文件的句柄。

例:

HINSTANCE hDll; //聲明一個Dll實例文件句柄  hDll = LoadLibrary("DllDemo.dll");//導入DllDemo.dll動態連接庫 

6、通過GetProcAddress()函數獲取導入到應用程序中的函數指針。

例:

lpMax M;  M = (lpMax)GetProcAddress(hDLL,"Max");  int value;  value = M(2,9);  std::cout<<value<<std::endl; 

注:上述代碼中 Max = (lpMax)GetProcAddress(hDLL,"Max"); 其中參數”Max"為函數名稱,可能無法找到(可能和未使用模塊定義文件有關)。此時,可用兩種方法解決

1、利用vs自帶的命令行工具,查看函數的正確名稱,首先cd 到bin目錄(vc/bin),利用的是vs自帶的dumpbin.exe工具。進入bin目錄之后,輸入命令dumpbin /exports d:/路徑/xxx.dll,查看函數的輸出名稱。通常為_FunctionName@數字,此例中的名稱為_Max@8.

2、根據函數在dll(生成dll的頭文件中的順序),例如 Max = (lpMax)GetProcAddress(hDLL,(LCPSTR)MAKEINTRESOURCE(1)); //找到第一個函數

7、函數調用完畢后,使用FreeLibrary()卸載DLL文件。

FreeLibrary(hDll); 

8、編譯并生成應用程序DllWinTest.exe

注:顯式鏈接應用程序編譯時不需要使用相應的Lib文件。

動態鏈接提供了一種方法,使進程可以調用不屬于其可執行代碼的函數。通過使用 DLL,程序可以實現模塊化,由相對獨立的組件組成。希望通過本文的分析,你會對此有了解。

以上這篇淺析C/C++中動態鏈接庫的創建和調用就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品久久久久久福利| 色老头一区二区三区在线观看| 国产一区二区av| 久久天天躁狠狠躁夜夜躁2014| 国产成人自拍视频在线观看| 97碰碰碰免费色视频| 九九热最新视频//这里只有精品| 国产精品视频一区二区三区四| 久久躁狠狠躁夜夜爽| 久久777国产线看观看精品| 国产一区二区三区视频在线观看| 日韩动漫免费观看电视剧高清| 国产午夜精品美女视频明星a级| 国产成人精品免费久久久久| 国产成人精品亚洲精品| 国产精品日韩在线播放| 亚洲第一页自拍| 俺去亚洲欧洲欧美日韩| 在线播放日韩专区| 国产精品视频大全| 日韩av不卡在线| 亚洲精品视频播放| 日韩欧美在线视频免费观看| 91高清在线免费观看| 欧美理论电影在线观看| 日产精品久久久一区二区福利| 欧美极品xxxx| 另类色图亚洲色图| 成人精品一区二区三区| 日韩av最新在线| 亚洲网站在线看| 国产亚洲一区二区精品| 搡老女人一区二区三区视频tv| 国产精品国产亚洲伊人久久| 欧美大码xxxx| 亚洲欧美日韩网| 亚洲精品短视频| 久久天天躁狠狠躁夜夜爽蜜月| 欧美放荡办公室videos4k| 国产精品永久免费观看| 色综合男人天堂| 欧美日韩在线视频一区二区| 欧美激情精品久久久久久变态| 伊人成人开心激情综合网| 亚洲激情视频网| 日韩人体视频一二区| 国产一区二区日韩精品欧美精品| 精品一区二区三区四区在线| 亚洲欧美日韩视频一区| 亚洲成人aaa| 亚洲综合日韩在线| 综合久久五月天| 久久综合免费视频| 在线日韩第一页| 亚洲电影av在线| 国产精品日韩一区| 亚洲欧美日韩国产中文| 亚洲国产成人在线视频| 久久精品视频在线播放| 日韩欧美在线视频日韩欧美在线视频| 精品中文字幕久久久久久| 色噜噜久久综合伊人一本| 中文字幕亚洲自拍| 国产精品69av| 久久精品国产亚洲精品| 一区二区在线视频| 欧美激情日韩图片| 亚洲xxxx妇黄裸体| 国产精品网站视频| 青草青草久热精品视频在线观看| 91亚洲精品在线| 日韩毛片在线观看| 中文国产成人精品久久一| 久久久免费在线观看| 日韩av网址在线观看| 亚洲网在线观看| 26uuu日韩精品一区二区| 日韩大陆毛片av| 国产一区二区丝袜高跟鞋图片| 久久久国产精品视频| 国产精品视频一区二区高潮| 亚洲人成自拍网站| 国产伊人精品在线| 国产日韩av在线| 亚洲国产精品美女| 91久久久久久久久久久| 美女性感视频久久久| 欧美猛少妇色xxxxx| 亚洲国产精品va在线观看黑人| 九九视频这里只有精品| 亚洲第一二三四五区| 精品国产1区2区| 成人日韩在线电影| 欧美日韩在线视频一区| 91精品国产高清久久久久久久久| 久久国产精品影视| 日韩电影免费观看中文字幕| 一区二区三欧美| 91久久久久久久久| 亚洲香蕉在线观看| 亚洲日本欧美日韩高观看| 亚洲国产日韩欧美在线动漫| 欧美二区乱c黑人| 亚洲国产精品悠悠久久琪琪| 国产精品亚发布| 国内精品视频在线| 亚洲国产另类 国产精品国产免费| 韩剧1988免费观看全集| 日韩亚洲精品视频| 亚洲人免费视频| 美女999久久久精品视频| 欧美电影免费观看高清完整| 日韩成人在线电影网| 中文日韩在线观看| 大桥未久av一区二区三区| 欧美国产乱视频| 久久天天躁日日躁| 亚洲国产欧美自拍| 97久久久久久| 欧美精品激情在线观看| 日韩成人在线视频| 亚洲精品中文字幕女同| 欧美精品在线免费观看| 在线观看免费高清视频97| 欧美激情精品久久久久久黑人| 久热精品视频在线观看| 亚洲国产高清福利视频| 日韩美女毛茸茸| 少妇久久久久久| 奇米一区二区三区四区久久| 欧美在线观看网址综合| 欧美一区视频在线| 亚洲日本欧美中文幕| 日韩欧美国产中文字幕| 亚洲另类xxxx| 91亚洲精品视频| 亚洲一区二区三区香蕉| 国产一区二区三区在线免费观看| 欧美中文字幕在线播放| 97视频在线观看播放| 亚洲精品91美女久久久久久久| 欧美高清无遮挡| 欧美电影第一页| 欧美体内谢she精2性欧美| 亚洲精品91美女久久久久久久| 国精产品一区一区三区有限在线| 国产精品嫩草视频| 国产成人久久久| 国产欧美亚洲视频| 欧美交受高潮1| 国产精品h在线观看| 亚洲欧美日本另类| 国产亚洲欧美日韩精品| 国产999精品久久久| 日韩欧美中文免费| 奇门遁甲1982国语版免费观看高清| 日本精品一区二区三区在线| 日韩av在线免费观看| 97在线观看视频| 性欧美亚洲xxxx乳在线观看| 色与欲影视天天看综合网| 在线精品视频视频中文字幕| 欧美性猛交99久久久久99按摩| 久久精品99久久香蕉国产色戒|