动态链接库的生成(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 ...
随机推荐
- busybox中tftp服务器使用命令
参数说明:-l 是local的缩写,后跟存在于Client的源文件名,或下载Client后重命名的文件名.-r 是remote的缩写,后跟Server即PC机tftp服务器根目录中的源文件名,或上传S ...
- (转)JAVA路径问题及命令行编译运行基础(linux下)
原地址: http://blog.csdn.net/biaobiaoqi/article/details/6846274 java的运行机制的基本概念: 源文件 也就是我们熟知的.java文件. 类文 ...
- 极客”一词,来自于美国俚语“geek”的音译,一般理解为性格古怪的人
起源 “ 极客”一词,来自于美国俚语“ geek”的音译,一般理解为性格古怪的人.数学“极客”大多是指,并不 一定是数学专业但又对数学等技术有狂热的兴趣并投入大量时间钻研的人.又 译作“ 奇客”.以前 ...
- 精简jQuery Tabs
闲来无事,周末用jQuery写了一个比较精简的Tabs,个别地方可以用到. 截图及代码如下: <!DOCTYPE html> <html> <head lang=&quo ...
- python运维开发(二十三)---tornado框架
内容目录: 路由系统 模板引擎 cookie 加密cookie 自定义api 自定义session 自定义form表单验证 异步非阻塞 web聊天室实例 路由系统 路由系统其实就是 url 和 类 的 ...
- http://www.cnblogs.com/Joyes1989/archive/2013/06/28/3161739.html centos 输入法安装切换
昨天装了一个centos 安装输入法的时候 让我有点纠结 全英文的 读不懂
- php版权重轮询调度算法
2013-09-25 <?php class WeightedRoundRobin { private static $_weightArray = array(); private stati ...
- JVM启动参数手册——JVM之八
jdk1.4.2 JVM官方地址:http://java.sun.com/j2se/1.4.2/docs/guide/vm/index.html 标准和非标注参数(for windows):http: ...
- 电子工程师名片——SPI NOR Flash
使用了MX25L512的SPI接口的Flash 电路连接图: 总的大小512kb,即64kB,sector的大小为256 Bytes,block的大小为4k Bytes 调试时出现的问题: 1.Fla ...
- C语言中预定义符 __FILE__, __LINE__, __FUNCTION__, __DATE__, __TIME__ 的使用演示
本文演示了C语言中预定义符 __FILE__, __LINE__, __FUNCTION__, __DATE__, __TIME__ 的使用. 这几个预定义符的名称就没必要再介绍了,顾名思义嘛. // ...