一、构建动态链接库(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显式调用的更多相关文章

  1. VC6.0 设置动态链接库工程生成dll以及lib文件的位置

    在"Projet"->"Settings..."的"Link"选项卡中 "Output file name"中设置 ...

  2. android之intent显式,显式学习

    intent,意图 当从一个Activity到另一个Activity时调用,这里重点学习显式,隐式的使用 使用语句上的区别: 隐式意图:                 显式意图: setAction ...

  3. C++ dll的隐式与显式调用

    应用程序使用DLL可以采用两种方式:一种是隐式链接,另一种是显式链接.在使用DLL之前首先要知道DLL中函数的结构信息.Visual C++6.0(或者更先进的版本)在VC\bin目录下提供了一个名为 ...

  4. Windows提供了两种将DLL映像到进程地址空间的方法(隐式和显式)

    调用DLL,首先需要将DLL文件映像到用户进程的地址空间中,然后才能进行函数调用,这个函数和进程内部一般函数的调用方法相同.Windows提供了两种将DLL映像到进程地址空间的方法: 1. 隐式的加载 ...

  5. c# implicit explicit关键字(隐式和显式数据类型转换)

    implicit关键字用于声明隐式的用户定义类型转换运算符.(explicit反之)explicit则用于显示转换用户自定义类型.static implicit operator target_typ ...

  6. IOS动画隐式,显式,翻页

    //  ViewController.m //  IOS动画0817 // //  Created by 张艳锋 on 15/8/17. //  Copyright (c) 2015年 张艳锋. Al ...

  7. ABAP-关于隐式与显式的DB Commit

    转载:https://www.cnblogs.com/liaojunbo/archive/2011/07/11/2103491.html 1.显式的DB Commit 显式的DB Commit并没有对 ...

  8. c# .net 关于接口实现方式:隐式实现/显式实现!

    以前在用到接口时,从来没注意到接口分为隐式实现与显示实现.昨天在浏览博客时看到相关内容,现在根据自己的理解记录一下,方便日后碰到的时候温习温习.  通俗的来讲,“显示接口实现”就是使用接口名称作为方法 ...

  9. activity的隐式和显式启动

    显式Intent(Explicit intent):通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent(Implicit i ...

随机推荐

  1. javascript版1024游戏源码

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. java基础学习笔记

    Q:    What if the main method is declared as private?  如果将主函数声明为私有类型的会怎样? A:     The program compile ...

  3. java调试一

    Eclipse 平台的特色在于内置了 Java 调试器,该调试器提供所有标准调试功能,包括进行单步执行.设置断点和值.检查变量和值以及暂挂和恢复线程的能力.Eclipse 平台工作台(Eclipse ...

  4. 批量数据上传的sql.xml

    <!-- User.xml --><?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE ...

  5. 网络编程之UDP

    UDP编程流程:一服务端:1.创建socket.  DatagramSocket socket = new DatagramSocket(8878); 2.创建数据包,用来接收发送的数据包.byte[ ...

  6. Niagara AX之在Station下显示Home节点

    默认的Station下是没有Home节点的,那么,这个Home节点是怎么添加上去的呢? 注意Home后面的描述(Description):“Navigation tree defined by nav ...

  7. JAVA不经过Catch(Exception e)直接到finally或者退出原因

    今天遇到一个很奇葩的问题!在写Hadoop程序的时候!new一个对象!程序直接跑到finally代码块里面去了!Catch里面的Exception也没有执行. Configuration config ...

  8. URL锚点定位

    我们都知道<a>标签中的url属性有三种值: 绝对 URL - 指向另一个站点(比如 href="http://www.example.com/index.htm") ...

  9. python一句代码建立树

    from collections import defaultdict def tree(): return defaultdict(tree) 上面的代码不难理解,就是利用递归的方式,创建了一个树的 ...

  10. Prime Path(POJ 3126 BFS)

    Prime Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15325   Accepted: 8634 Descr ...