程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 創建和使用動態鏈接庫dll

創建和使用動態鏈接庫dll

編輯:C++入門知識

創建新的動態鏈接庫Dll項目 1.創建靜態項目MathFucsDll: 選擇 win32控制台應用程序->輸入MathFuncsDll項目名稱->下一步->選擇DLL;選擇附加選項的空項目->完畢 2.向靜態庫添加類MyMathFuncs: [cpp]   #pragma  once   //MathFuncsDll.h   namespace MathFuncs   {       class MyMathFuncs       {       public:           static _declspec(dllexport) double Add(double a,double b);           static _declspec(dllexport) double Substract(double a,double b);           static _declspec(dllexport) double Multiply(double a,double b);           static _declspec(dllexport) double Divide(double a,double b);       };   }      //MathFuncsDll.cpp   #include "MathFuncsDll.h"   #include <stdexcept>   using namespace std;   namespace MathFuncs   {       double MyMathFuncs::Add(double a,double b)       {           return a+b;       }       double MyMathFuncs::Substract(double a,double b)       {           return a-b;       }       double MyMathFuncs::Multiply(double a,double b)       {           return a*b;       }       double MyMathFuncs::Divide(double a,double b)       {           if (b==0)           {               throw new invalid_argument("b cannot be zero!");           }           return a/b;       }   }   3.確認生成的是dll文件:項目,屬性->配置屬性,常規->配置類型:改為靜動態庫(.dll);編譯生成MathFuncsDll.lib和MathFuncsDll.dll 創建引用動態鏈接庫的應用程序 1.創建引用動態鏈接庫的控制台應用程序: 在同一個解決方案中添加項目MyExecRefsDll:選擇 win32控制台應用程序->輸入MyExecRefsDll項目名稱->下一步->選擇控制台應用程序;選擇附加選項的空項目->完畢 2.在應用程序中使用動態鏈接庫的功能 2.1添加頭文件目錄,以便程序中包含的頭文件存在(即可以找到): 項目,屬性->C/C++->常規->附加包含目錄:..\MathFuncsDll 或者是:項目屬性->VC++目錄->包含目錄:..\MathFuncsDll 2.2添加.Dll文件引用 項目,引用->通用屬性->框架和引用->添加引用->會出現MathFuncsDll的項目名稱和項目目錄->確定 或者是,添加庫目錄及附加庫:項目,屬性->連接器->常規->附加庫目錄:如$(OutDir)                                                    項目,屬性->連接器->輸入->附加依賴項:MathFuncsDll.lib                                                    且MathFuncsDll.dll必須與MyExecRefsDll.exe文件在同一個目錄 3.程序使用 [cpp]   #include "MathFuncsDll.h"   #include <iostream>   using namespace std;    int main()   {       double a=7.4;       int b=99;       cout<<"a + b="<<MathFuncs::MyMathFuncs::Add(a,b)<<endl;       cout<<"a - b="<<MathFuncs::MyMathFuncs::Substract(a,b)<<endl;       cout<<"a * b="<<MathFuncs::MyMathFuncs::Multiply(a,b)<<endl;       cout<<"a / b="<<MathFuncs::MyMathFuncs::Divide(a,b)<<endl;       return 0;  www.2cto.com }   4.設置MyExecRefsDll為啟動項目,按Ctrl+F5 比較Dll與Lib創建,引用過程中的不同 創建過程中的不同:Dll項目中的成員函數前添加了_declspec(dllexport),其生產~.lib和~.dll兩者文件,而lib項目中只生產了~.lib文件 引用過程中的不同:Dll項目引用的過程與Lib項目引用的過程幾乎完全一樣(設置.h,.lib文件目錄,和附加lib文件),唯一小小的區別就是:dll項目中生產的dll文件必須與引用者的.exe文件在同一個目錄,而lib項目中卻沒有生產dll文件

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved