C++动态链接库(一)

动态链接库分三种:非MFC链接库,MFC链接库和扩展的MFC链接库;本文章主要介绍非MFC链接库

1 打开VS2010→新建win32项目→命名dll→下一步选中动态链接库dll完成(不能建空文档,否则会出现找不到入口)
2 新建空文件lib.h和lib.cpp

 其中lib.h文件中代码如下:

#ifndef LIB_H
#define LIB_H
extern "C" int __declspec(dllexport) add(int x,int y);//__declspec(dllexport)语句。这个语句的含义是声明函数add为DLL的导出函数。
//DLL内的函数分为两种:DLL导出函数,可供应用程序调用;  DLL内部函数,只能在DLL程序使用,应用程序无法调用它们。
#endif
其中lib.cpp文件中代码如下:
#include "lib.h"
int add(int x,int y)
{
	return x+y;
}
3 点击生成(不是调试F5,否则报错),在Debug文件夹下产生dll.lib文件和dll.dll(不是lib.dll文件)两个文件

4 新建一个dlltest对话框工程,把生成的dll.dll文件拷贝到该工程文件夹下。
5 动态调用,即需要时调用,不需要时释放

不用声明直接在需要的地方调用,本案例在BOOL CdlltestDlg::OnInitDialog()中调用,代码如下:

typedef int (*lpMyAdd)(int,int);宏定义函数指针类型,与要调用的函数参数和返回值相同
	HINSTANCE HDll;//实例一个程序
	lpMyAdd oneMyAdd;//实例一个dll中的函数
	HDll=LoadLibrary(L"dll.dll");//加载dll
	if (HDll!=NULL)//判断是否加载成功
	{
		oneMyAdd=(lpMyAdd)GetProcAddress(HDll,"add");//获取函数地址
		if (oneMyAdd!=NULL)//判断是否获取成功
		{
			int m=oneMyAdd(10,20);//调用显示
			CString cs;
			cs.Format(L"%d",m);
			AfxMessageBox(cs);
		}
	}
	FreeLibrary(HDll);//释放程序实例;

6 静态调用

需要三个文件一个.h头文件,一个.lib文件,一个.dll文件,把这些文件都考在要调用的程序目录,在程序中添加声明:

#include "1.h"
#pragma comment(lib,"newdllhide.lib")

调用时只需要函数名就行

int b=add(10,20);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值