动态链接库的生成(dll)和 动态链接库隐式and显式调用
一、构建动态链接库(dll.dll dll.lib dll.h)
说明: .dll 是在执行程序是调用 .lib 是在连接程序是调用 .h是在编译程序时调用
1.头文件(声明导入函数):_declspec(dllimport) int add(int a,int b);//(头文件不参加.dll文件的生成)
2.cpp文件(定义导出函数):_declspec(dllexport) int add(int a,int b){return a+b;}
3.结果得到.dll .lib .h三个文件
二、示例程序
1、头文件dll
#ifdef DLL_API #else #define DLL_API // 将DLL_API定义为空;动态和静态都是可用的 在动态链接库中#define DLL_API _declspec(dllimport)可用,静态不行 #endif DLL_API int add(int a,int b); DLL_API int subtract(int a,int b);
class DLL_API Point { public: int product(int a,int b);//乘积 };
2、cpp文件
#define DLL_API _declspec(dllexport)
#include "pcl.h"
int add(int a,int b){return a+b;}
int subtract(int a,int b){return a-b;}
int Point::product(int a,int b)
{
return a*b;
}
动态链接库隐式and显式调用
一、隐式应用动态链接库(三个文件怎么用)
1.新建一个控制台工程,在工程中添加.h头文件路径(菜单Tools->Options->Directors)//.h文件用法
2.添加add.lib(工程名字上右键->Settings->Link) 或者在cpp中写下代码 #pragma comment (lib,"xxx.lib") //.lib文件的用法
3.注意将.dll和.lib文件放到工程文件夹下面//.dll 文件的用法
实例代码
#include <stdio.h>
#include <iostream>
#include "pcl.h"
#pragma comment (lib,"pcl.lib")
using namespace std; void main() {
int a=,b=,c=,d=;
c=add(a,b);
}
二、显式应用动态链接库(四句代码,红色部分替换即可)
1、定义一个句柄对象 HINSTANCE hInst;
2、加载函数 hinst=LoadLibrary("add.dll");
3、定义函数指针类型 typedef int(*ADDPROC)(int a,int b);//注意,ADDPROC是一个类型,不是一个变量,过渡作用
4、定义变量并赋值 ADDPROC Add=(ADDPROC)GetProAddress(hInst,"add");
5、至此就可以运用函数Add(5,3);了。
http://www.cnblogs.com/hlxs/p/3783920.html
链接:http://pan.baidu.com/s/1o6KgHGe 密码:5zaj
动态链接库的生成(dll)和 动态链接库隐式and显式调用的更多相关文章
- VC6.0 设置动态链接库工程生成dll以及lib文件的位置
在"Projet"->"Settings..."的"Link"选项卡中 "Output file name"中设置 ...
- android之intent显式,显式学习
intent,意图 当从一个Activity到另一个Activity时调用,这里重点学习显式,隐式的使用 使用语句上的区别: 隐式意图: 显式意图: setAction ...
- C++ dll的隐式与显式调用
应用程序使用DLL可以采用两种方式:一种是隐式链接,另一种是显式链接.在使用DLL之前首先要知道DLL中函数的结构信息.Visual C++6.0(或者更先进的版本)在VC\bin目录下提供了一个名为 ...
- Windows提供了两种将DLL映像到进程地址空间的方法(隐式和显式)
调用DLL,首先需要将DLL文件映像到用户进程的地址空间中,然后才能进行函数调用,这个函数和进程内部一般函数的调用方法相同.Windows提供了两种将DLL映像到进程地址空间的方法: 1. 隐式的加载 ...
- c# implicit explicit关键字(隐式和显式数据类型转换)
implicit关键字用于声明隐式的用户定义类型转换运算符.(explicit反之)explicit则用于显示转换用户自定义类型.static implicit operator target_typ ...
- IOS动画隐式,显式,翻页
// ViewController.m // IOS动画0817 // // Created by 张艳锋 on 15/8/17. // Copyright (c) 2015年 张艳锋. Al ...
- ABAP-关于隐式与显式的DB Commit
转载:https://www.cnblogs.com/liaojunbo/archive/2011/07/11/2103491.html 1.显式的DB Commit 显式的DB Commit并没有对 ...
- c# .net 关于接口实现方式:隐式实现/显式实现!
以前在用到接口时,从来没注意到接口分为隐式实现与显示实现.昨天在浏览博客时看到相关内容,现在根据自己的理解记录一下,方便日后碰到的时候温习温习. 通俗的来讲,“显示接口实现”就是使用接口名称作为方法 ...
- activity的隐式和显式启动
显式Intent(Explicit intent):通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent(Implicit i ...
随机推荐
- [原创]Windows下更改特定后缀名以及特定URL前缀的默认打开方式
Windows下,特定后缀名的文件会由特定的应用程序来运行,比如双击readme.txt,通常情况下会由Windows自带的notepad.exe(记事本)打开文件.如果现在安装了记事本以外的其他文本 ...
- activiti笔记二:用户任务
1, assignee 代替humanPerformer 功能 2, cadidateUsers代替potentialOwner功能 3, candidateGroups代替potentialOwn ...
- WPF/MVVM 快速开发
http://www.codeproject.com/Articles/165368/WPF-MVVM-Quick-Start-Tutorial 这篇文章醍醐灌顶,入门良药啊! Introductio ...
- web.xml中配置log4j
1.将 commons-logging.jar和 log4j.jar加入你的项目中:2.在src/下创建log4j.properties|log4j.xml文件:3.在web.xml中配置log4j的 ...
- [Head First Python]5. 推导数据:处理数据
读取4个文件内容,格式化数据,升序,显示每个文件前3个数据 julie.txt 2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21 james.txt 2-34, ...
- 论docker中 CMD 与 ENTRYPOINT 的区别
Dockerfile里有 CMD 与 ENTRYPOINT 两个功能咋看起来很相似的指令,开始的时候觉得两个互用没什么所谓,但其实并非如此: CMD指令: The main purpose of a ...
- 常用两种数据交换格式之XML和JSON的比较
目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信每一个web developer都不会感到陌生: 相比之下,JSON可能对于一些新步入开发领域的新手会感到有些陌生,也可能你 ...
- 将QT开发的界面程序封装成DLL,在VC中成功调用
最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后再动态调用DLL给出的接口函数,使封装在DLL内部的QT界面跑起来,在网上查了很多资料,今天终于成功了,经验不敢独享,因为CSDN给了我很多 ...
- Qt中事件处理的方法(三种处理方法,四种覆盖event函数,notify函数,event过滤,事件处理器。然后继续传递给父窗口。可观察QWidget::event的源码,它是虚拟保护函数,可改写)
一.Qt中事件处理的方式 1.事件处理模式一 首先是事件源产生事件,最后是事件处理器对这些事件进行处理.然而也许大家会问, Qt中有这么多类的事件,我们怎么样比较简便的处理每个事件呢?设想,如果是 ...
- cf479A Expression
A. Expression time limit per test 1 second memory limit per test 256 megabytes input standard input ...