【COM組件編程一】基礎篇:動態鏈接庫的編寫與測試

 開發環境:VC++  6.0

VC++編寫動態鏈接庫有以下3種:Win32 DLL、MFC常規DLL(動態鏈接MFC)、MFC擴展DLL等;

Win32 DLL不採用MFC類庫結構,其導出函數爲標準的C接口,能被非MFC和MFC編寫的應用程序所調

用;

MFC常規DLL包含一個繼承自CWinApp的類,但是沒有消息循環;

MFC擴展DLL採用MFC的動態鏈接版本創建,它只能被用MFC類庫所編寫的應用程序所調用

要求:動態鏈接庫中編寫一個函數實現整數的加法運算,然後在別的程序中調用這個動態鏈接庫中的函數。

一、創建DLL:

1、打開visual c++ 6.0通過new創建一個win30 Dynamic-link Libary的工程,假設工程名爲AddTDLL

2、選擇最後一個選項,讓系統創建一些必要的文件

3、修改AddDLL.cpp文件:

//AddDLL.cpp

#include "stdafx.h"

#include "AddDll.h"

int add(int a, int b)

{ return a+b; }

4、修改AddDLL.h文件

//AddDLL.h

extern “C” _declspec(dllexport) int add (int a, int b);//導出函數聲明

5、編譯生成DLL文件:AddDLL.dll

二、測試編寫好的DLL文件

1、創建一個Win32工程,工程名爲useAddDll

2、編寫useAddDll.cpp文件:

//useAddDll.cpp

#include "stdafx.h"

#include "stdio.h"

int main()

{

      typedef int (*pAdd)(int a, int b);

      pAdd add;

      HINSTANCE handle;

      handle = LoadLibrary("****//AddDLL.dll")     //加載動態鏈接庫,注意路徑

      if(handle == NULL)

       {

           printf("動態鏈接庫加載失敗!/n");

           return 1;

        }

      Add = (pAdd)GetProcAddress(handle,"add"); //獲取動態鏈接庫中add函數的指針

      if(Add == NULL)

      {

           printf("找不到該函數/n");

           return 1;

       }

      int result = Add(13,45);

      printf("the result is %d/n",result);

      FreeLibrary(handle);  //釋放動態鏈接庫

      return 0;

}

程序基本完成,由於本人水平有限,有錯誤請大家指出!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章