国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

C/C++中動態(tài)鏈接庫的創(chuàng)建和調(diào)用

2019-11-17 05:02:55
字體:
供稿:網(wǎng)友
  動態(tài)連接庫的創(chuàng)建步驟:  一、創(chuàng)建Non-MFC DLL動態(tài)鏈接庫  1、打開File —> New —> PRoject選項,選擇Win32 Dynamic-Link Library —>sample project  —>工程名:DllDemo  2、新建一個.h文件DllDemo.h以下是引用片段:
  #ifdef DllDemo_EXPORTS
  #define DllAPI __declspec(dllexport)
  #else
  #define DllAPI __declspec(dllimport)
  extern "C" //原樣編譯
  {
  DllAPI int __stdcall Max(int a,int b); //__stdcall使非C/C++語言內(nèi)能夠調(diào)用API
  }
  #endif  3、在DllDemo.cpp文件中導(dǎo)入DllDemo.h文件,并實現(xiàn)Max(int,int)函數(shù)以下是引用片段:
  #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、編譯程序生成動態(tài)連接庫  二、用.def文件創(chuàng)建動態(tài)連接庫DllDemo.dll?! ?、刪除DllDemo工程中的DllDemo.h文件?! ?、在DllDemo.cpp文件頭,刪除 #include DllDemo.h語句?! ?、向該工程中加入一個文本文件,命名為DllDemo.def并寫入如下語句:  LIBRARY MyDll  EXPORTS  Max@1  4、編譯程序生成動態(tài)連接庫。
  動態(tài)鏈接的調(diào)用步驟:  一、隱式調(diào)用  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、編譯并生成應(yīng)用程序DllCnslTest.exe  二、顯式調(diào)用  1、 建立DllWinTest工程  2、 將文件DllDemo.dll拷貝到DllWinTest工程所在的目錄或Windows系統(tǒng)目錄下?! ?、 用vc/bin下的Dumpbin.exe的小程序,查看DLL文件(DllDemo.dll)中的函數(shù)結(jié)構(gòu)?! ?、 使用類型定義要害字typedef,定義指向和DLL中相同的函數(shù)原型指針。  例:以下是引用片段:
  typedef int(*lpMax)(int a,int b); //此語句可以放在.h文件中  5、 通過LoadLibray()將DLL加載到當(dāng)前的應(yīng)用程序中并返回當(dāng)前DLL文件的句柄?! ±阂韵率且闷危?br />  HINSTANCE hDll; //聲明一個Dll實例文件句柄
  hDll = LoadLibrary("DllDemo.dll");//導(dǎo)入DllDemo.dll動態(tài)連接庫  6、 通過GetProcAddress()函數(shù)獲取導(dǎo)入到應(yīng)用程序中的函數(shù)指針?! ±阂韵率且闷危?br />  lpMax Max;
  Max = (lpMax)GetProcAddress(hDLL,"Max");
  int value;
  value = Max(2,9);
  printf("The Max value is %d",value);  7、 函數(shù)調(diào)用完畢后,使用FreeLibrary()卸載DLL文件。
  FreeLibrary(hDll);  8、 編譯并生成應(yīng)用程序DllWinTest.exe  注:顯式鏈接應(yīng)用程序編譯時不需要使用相應(yīng)的Lib文件。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 西峡县| 渝中区| 武山县| 长垣县| 麻栗坡县| 南陵县| 三穗县| 黎平县| 阜城县| 黄浦区| 竹溪县| 长乐市| 临安市| 孝义市| 东兰县| 长岭县| 香港 | 五大连池市| 汾阳市| 宣化县| 青河县| 桐庐县| 来凤县| 循化| 舒城县| 沾益县| 绍兴县| 淮安市| 达州市| 龙里县| 象州县| 黄冈市| 闽清县| 安达市| 吕梁市| 商都县| 曲阜市| 乌苏市| 勃利县| 聂拉木县| 聂拉木县|