VS之动态库实现和调用
来源:互联网 发布:如何在淘宝网上买课件 编辑:程序博客网 时间:2024/06/07 01:57
程序开发中,经常会使用到动态库,那么动态库该如何实现和调用呢?本文通过一个简单的例子实现。
使用工具:VS2008
使用语言:C++
开发步骤:
1.新建动态库程序
1.1新建调用类和类中函数的动态库
新建类,在.h和.cpp文件顶部分别添加定义,并在类名前加上导出标志
DllFunc.h
#pragma once#ifdef MY_DLL_EXPORTS#define MY_DLL_API __declspec(dllexport)#else#define MY_DLL_API __declspec(dllimport)#endifclass MY_DLL_API CDllFunc{public:CDllFunc(void);~CDllFunc(void);public:void Show(void);};
DllFunc.cpp
#include "StdAfx.h"#include "DllFunc.h"#ifndef MY_DLL_EXPORTS#define MY_DLL_EXPORTS#endifCDllFunc::CDllFunc(void){}CDllFunc::~CDllFunc(void){}void CDllFunc::Show(void){AfxMessageBox(_T("静态加载动态库"));}
1.2新建接口类动态库
新建类,在.cpp文件顶部添加接口函数
extern "C"__declspec(dllexport) void CreateObject(){//*pObj = new CEcu;AfxMessageBox(_T("动态加载动态库"));}
2.新建动态库调用程序
新建一个对话框应用程序,添加两个按钮,分别用于静态和动态调用动态库
2.1动态加载动态库
2.1.1添加动态库.dll
2.1.2加载动态库并调用动态库函数
void CDllUseDemoDlg::OnBnClickedBtnDllInfo(){HINSTANCE hIn = NULL;hIn = LoadLibrary(_T("DllCreateInfoDemo.dll"));if(hIn != INVALID_HANDLE_VALUE){}else{MessageBox(_T("Load DLL error"));return;}typedef void (*LPFNREGISTER)();LPFNREGISTER pFun = NULL;char p[256] = {0};CString str = _T("CreateObject");int cnt = str.GetLength();for(int i=0; i<cnt; i++){p[i] = str.GetAt(i);}pFun = (LPFNREGISTER)GetProcAddress(hIn,p);(*pFun)();FreeLibrary(hIn);}
2.1.3效果如下
2.2静态加载动态库
2.2.1添加动态库.h .lib .dll并导入头文件.h到工程中
2.2.2标识需要加载的.lib文件
#include"DllFunc.h"#pragma comment(lib,"DllCreateFuncDemo.lib")
2.2.3直接使用类调用函数
void CDllUseDemoDlg::OnBnClickedBtnDllFunc(){CDllFunc dll;dll.Show();}
2.2.4效果如下
源码下载
0 0
- VS之动态库实现和调用
- qt和VS动态库调用心得
- VS动态链接库隐式创建和调用
- VS实现动态库的创建和使用
- VS 2015 DLL的创建、静态调用和动态调用
- VS之动态库调试
- 动态链接库之 隐式调用——vs手把手演示
- 动态链接库之 显式调用——vs手把手演示
- VS下创建静态链接库和动态链接库及其调用
- 一起看代码来玩玩QT之14 15 16(动态库静态库的实现和调用)
- dll动态链接库之用类写配置文件和调用判断方法接口的实现中遇到的若干问题
- VS C++中调用C#动态库静态函数
- vs c调用matlab生成的动态库
- Qt中隐式调用VS建立的dll动态库
- 利用VS编写并调用动态链接库
- vs 中调用QT的动态连接库
- 关于VS 动态库和 静态调试
- vs配置和动态库链接
- C++类中使用表驱动
- 数据平台调度系统的设计
- hoj 1081 Scramble Sort
- dell md3200i 磁盘阵列
- 守护进程与僵尸进程
- VS之动态库实现和调用
- 基于Android的计步器(Pedometer)的讲解(一)——Fragment页面跳转
- Leetcode -- 3sum
- 123茶楼,众筹...
- Linux内核设计与实现 学习笔记(5)进程地址空间
- 像建筑设计师一样去写程序
- 【嵌入式linux】(第五步):使用eclipse集成开发环境开发第一个嵌入式Linux驱动
- 【嵌入式linux】(第四步):安装NFS服务,并挂载到开发板
- Linux内核设计与实现 学习笔记(6)页高速缓存和页回写