C++动态链接库(一)
来源:互联网 发布:淘宝怎么定时上架软件 编辑:程序博客网 时间:2024/06/09 15:00
动态链接库分三种:非MFC链接库,MFC链接库和扩展的MFC链接库;本文章主要介绍非MFC链接库
1 打开VS2010→新建win32项目→命名dll→下一步选中动态链接库dll完成(不能建空文档,否则会出现找不到入口)
2 新建空文件lib.h和lib.cpp
其中lib.h文件中代码如下:
#ifndef LIB_H#define LIB_Hextern "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");//加载dllif (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
- 动态链接库(一)
- 动态链接库(一)
- 动态链接库(一)
- C/C++-动态链接库(DLL)
- c动态链接库
- C#调用C/C++ 动态链接库DLL(一)
- 专题:Windows动态链接库(一)
- Delphi 动态链接库(一)
- C++动态链接库(一)
- C++/MFC-动态链接库(DLL)
- 静态链接VS动态链接(一)
- 动态链接库详解【一】
- 动态链接库理解(一)
- 【C/C++】静态链接库、动态链接库、extern "C"
- 动态链接库与主程序交互之[MFC] VC++动态链接库资源调用(一)
- 动态链接库全面浅析(一)-----Win32 动态链接库
- 动态链接库全面浅析(一)-----Win32 动态链接库
- 【C/C++】automake生成动态链接库
- Photoshop一键制作从序列图导出GIF(GUI版本)
- Codeforces 760B (二分)
- Qt 第二章:调用退出
- Linux下搭建BT服务器
- spring MVC注解模式的经典实现
- C++动态链接库(一)
- zabbix监控nginx性能状态
- thinkphp路由重定义简化url访问地址
- 58到家数据库30条军规解读
- 延时函数sleep和delay的区别
- 名企招聘:2016美团研发工程师笔试题
- python eval函数,将列表样式的字符串转化为列表
- F - Auxiliary Set HDU - 5927
- D. Artsem and Saunders----数学思维