1. 程式人生 > >VS2012中工程呼叫另一個工程的DLL檔案

VS2012中工程呼叫另一個工程的DLL檔案

建立動態庫方法:

建立動態庫是生成 .dll .lib 兩個個檔案

檔案 -> 新建 -> 專案 -> win32控制檯應用程式 專案名稱:DLLGenerator

應用程式型別:DLL  附加選項:空專案

 

建立原始檔dllgenerator.cpp(不需要主函式,只寫你需要動態呼叫的函式)

 

  1. // 整數加法和乘法  
  2. int Add(int a, int b){  
  3. return a + b;  
  4. }  
  5. int Mul(int c, int d){  
  6. return c * d;  
  7. }  

建立頭文dllgenerator.h(一定要把函式宣告寫好)

 

  1. int Add(int, int);  
  2. int Mul(int, int);  

建立原始檔dllmain.cpp(一定要包含#include<windows.h>)

    - 下面的函式是VS2013自動生成,沒生成複製即可。其實是在建立工程專案時不選空專案時候vs自動生成的,但不選空專案會產生很多其他檔案和依賴項,本文教你建立最純淨的工程,注意包含window.h

 

  1. // dllmain.cpp : 定義 DLL 應用程式的入口點。  
  2. #include <windows.h>  
  3. BOOL APIENTRY DllMain(HMODULE hModule,  
  4. DWORD  ul_reason_for_call,  
  5. LPVOID lpReserved  
  6. )  
  7. {  
  8. switch (ul_reason_for_call)  
  9. {  
  10. case DLL_PROCESS_ATTACH:  
  11. case DLL_THREAD_ATTACH:  
  12. case DLL_THREAD_DETACH:  
  13. case DLL_PROCESS_DETACH:  
  14. break;  
  15. }  
  16. return TRUE;  
  17. }  

建立原始檔Source.def

    - 建立方式如下圖,選擇 VisualC++ -> 模組定義檔案(.def)

    - 在此檔案第一行引號中填你的專案名稱即可,EXPORTS下面列出要生成的函式名稱 格式:“名稱 @序號”)

[cpp] view plain copy

 

  1. LIBRARY "DLLGenerator"  
  2. EXPORTS  
  3.      Add @1  
  4.      Mul @2  

 

點選選單欄 生成 -> 生成解決方案 或者 按Ctrl+F5

輸出欄顯示 建立庫 DLLGenerator.lib 和 生成 DLLGenerator.dll

 

lib檔案裡面有對dll檔案的描述,所以生成的dll檔案不要改名稱,否則lib檔案和dll檔案無法對應

在專案方案目錄裡,Debug資料夾中可以找到DLLGenerator.lib 和 DLLGenerator.dll, 把這兩個檔案和工程的標頭檔案(dllgenerator.h)移動到一個空資料夾(E:\dlltest\DLL)中,以後你的專案用到此dll就包含這個目錄,至此動態庫建立完畢。

 

 

專案呼叫動態庫方法如下:

呼叫動態庫是呼叫 .dll .lib .h 三個檔案

檔案 -> 新建 -> 專案 -> win32控制檯應用程式 專案名稱:DLLTestor

應用程式型別:控制檯應用程式  附加選項:空專案

 

開啟專案 -> 專案屬性 -> 配置屬性 -> VC++目錄 -> 包含目錄 加入DLLGenerator.h所在目錄的絕對路徑 (E:\dlltest\DLL),以分號間隔

開啟專案 -> 專案屬性 -> 配置屬性 -> VC++目錄 -> 庫目錄 加入DLLGenerator.lib所在目錄的絕對路徑 (E:\dlltest\DLL)

 

開啟專案 -> 專案屬性 -> 配置屬性 -> 連結器 -> 輸入 -> 附加依賴項 中填上DLLGenerator.lib(以分號間隔),點選右下角 應用 確定

 

工程呼叫dll時首先在工程檔案目錄中查詢dll,找不到後在C:\Windows\System32 中找。所以我們自己專案簡單呼叫dll時就把生成的dll檔案複製到工程目錄中,如果經常用可以把dll檔案放到C:\Windows\System32中

 

新建原始檔main.cpp

[cpp] view plain copy

 

  1. #include<iostream>  
  2. #include"dllgenerator.h"  
  3. using namespace std;  
  4. int main(){  
  5. int a = 2;  
  6. int b = 3;  
  7. cout << Add(a, b) << endl;  
  8. cout << Mul(a, b) << endl;  
  9. }  

點選選單欄,除錯 -> 開始執行(不除錯)  或者按F5

執行結果:

至此呼叫動態庫成功。

 

---------------End-----------------