开发环境: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;
}
程序基本完成,由于本人水平有限,有错误请大家指出!