【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;

}

程序基本完成,由于本人水平有限,有错误请大家指出!

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