动态链接库使用

// 动态链接库测试2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>

//隐式连接:这种连接方式是由编译器自己加载DLL文件的
/*#pragma comment(lib,"动态链接库2.lib")
extern "C" _declspec(dllimport) int Add(int x,int y);
extern "C" _declspec(dllimport) int Mul(int x,int y);
extern "C" _declspec(dllimport) int Div(int x,int y);
*/

//显示连接    自己加载DLL文件

typedef int(*pAdd)(int ,int);
typedef int(*pMul)(int ,int);
typedef int(*pDiv)(int ,int);

int main(int argc, char* argv[])
{    
    pAdd plus=NULL;
    pMul mul=NULL;
    pDiv div=NULL;
    HINSTANCE hInstance=LoadLibrary("动态链接库2.dll");
    plus=(pAdd)GetProcAddress(hInstance,"Add");//这里的函数名必须是Dll文件名中的函数名
    mul=(pMul)GetProcAddress(hInstance,"Mul");
    div=(pDiv)GetProcAddress(hInstance,"Div");

int result=plus(4,5);
    printf("%d\n",result);
//第一步加载DLL

/*int y=Add(100,400);
    printf("Hello World\n%d!\n",y);*/

return 0;
}

时间: 2024-08-04 08:43:43

动态链接库使用的相关文章

LINUX系统中动态链接库的创建与使用{补充}

大家都知道,在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library).这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个执行程序间共享,节省了空间,提高了效率,具备很高的灵活性,得到越来越多程序员和用户的青睐.那么,在LINUX系统中有无这样的函数库呢? 答案是肯定的,LINUX的动态链接库不仅有,而且为数不少.在/lib目录下,就有许多以.so作后缀的文件,这

动态链接库DLL的通俗理解

今天主要布置了一个任务要求写一个ocx控件,是用VC开发,虽然一直以来都是用VC写程序,但是使用到的功能仅仅是写一个小程编译运行,连链接都省去了,因为所有的功能都在一个文件里面就省去了链接这一步,所以写个这个什么ocx空间也只能是从零开始,主管给了几个DLL文件和说明文档,在电脑C盘里面看见过许多DLL为后缀的文件,但是不知道是什么东西也没有去了解过,现在要用了,这篇文章就给大家介绍一下我对DLL的了解,我是菜鸟准备入门,前辈勿喷.首先看一百度百科上怎么说: "DLL文件又称"应用程序

使用VS2015创建和使用动态链接库-图文详解

之前看过原创一篇<VS2010 动态库开发--第一章 演练:创建和使用动态链接库 (C++)>的帖子,地址是http://blog.sina.com.cn/s/blog_6fb3686501011ymn.html,感谢原创.这里我们使用VS2015创建和使用自己的动态链接库,配以图文详解. 我们先来演示如何使用VS2015创建一个动态链接库.1.新建一个"Win32控制台应用程序","名称"为MathFuncsDll,"解决方案名称"

[C] linux静态链接库与动态链接库详解

http://blog.chinaunix.net/u2/76292/showart.php?id=1274181 一顺便说说了哦  通常情况下,对函数库的链接是放在编译时期(compile time)完成的.所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file).程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下.所以这些函数库被成为静态库(static libaray),通常文件名为"libxx

linux下Eclipse进行C编程时动态链接库的生成和使用

引用 http://linux.chinaitlab.com/soft/864157.html 欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 一.创建动态链接库1.创建工程new->project->c++ project选择Shared Library->Empty Project.输入工程名a,点击finish,完成工程的创建. 2.编写代码在windows下封装动态链接库时对要封的函数要用__declspec(dllexport)来标明,在linux

linux找不到动态链接库 .so文件的解决方法

如果使用自己手动生成的动态链接库.so文件,但是这个.so文件,没有加入库文件搜索路劲中,程序运行时可能会出现找不到动态链接库的情形. 可以通过ldd命名来查看可执行文件依赖的动态链接库,如下(其中D为可执行程序): 其中的libjson_linux-gcc-4.6_libmt.so cannot found. 解决这个问题: (1)在系统中查找这个文件(当然要保证系统中已经有这个.so文件,只是查找路径没有设置正确而已): sudo find / -name libjson_linux-gcc

VS2015_动态链接库学习

非MFC动态链接库 创建一个名为ex1的Win32项目 创建一个DLL项目,保留预编译的头文件 默认文件 创建完成项目之后,包含几个默认的文件 stdafx.h文件用于包含标准系统包含的头文件  对应于stdafx.cpp文件,主要包含stdafx.h的头文件  targetver.h主要用于定义dll可以使用的最高的Windows版本  dllmain.cpp用于定义dll的程序入口点  dllmain函数是加载dll时候的入口函数 创建ex1.h文件,定义导出的变量和导出的函数  可以快速创

C++中的动态链接库

一,动态链接库的基本概念 1.DLL(Dynamic Linker Library)的概念 可以把DLL看做是一个仓库,它提供了一些可以直接拿来用的变量,函数或者类(但是不建议从DLL中获取变量),在历史的发展中,仓库经历了从“无库 - 静态链接库 - 动态链接库”的时代. 静态链接库(.lib)和动态链接库(.dll)都是共享代码的方式.如果采用了静态链接库,则无论你愿不愿意lib中的代码指令都被直接包含进了最终生成的.exe程序中.但若是使用了动态链接库,该DLL则不会被包含进.exe程序中

进程间通信 - 动态链接库中共享内存(利用DLL的2~3G的地址段空间)

前言 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据,以及其他的一些资源组成.32位系统的进程分配4G的虚拟地址空间.内存地址范围是0x00000000-0xFFFFFFFF.这个内存地址空间是每个进程独立的,也就是说,在一个进程中是不能访问其他进程的地址空间的. 举个例子,进程A的内存里保存了一个数据,假设这个数据的地址是0x33333333.这个是时候,即使把进程B的内存地址是0x33333333的数据读出来.这个数据也和进程A里同地址的数据是不一样的.甚至进程