windows下动态链接库的创建和使用

动态链接库:顾名思义,程序运行时动态加载的库。将程序中的某些模块用动态链接库的方式发布,可以有效的减少可执行文件(.exe)的容量,实现模块与程序的分离。使用动态链接库时最重要的是 .h头文件 .lib引入库文件 .dll文件:.h文件包括类或者变量的申明,.lib文件包括包括该dll导出的变量或者函数的符号名,dll文件包含该DLL实际的函数和数据。

在使用动态库的情况下,在编译连接和执行文件时,只需要连接该DLL的引入库文件,该DLL中的函数代码和数据并不复制到可执行文件中,直到可执行程序运行时,才去加载所需要的DLL,将该DLL映射到进程的地址空间中,然后访问DLL中导出的函数

VS2010中创建DLL时,可以选择控制台项目下的DLL项目,添加.h和.cpp文件编译即可。将编译生成的.lib和.h文件复制到目的工程中,链接进目的工程即可;将生成的.dll文件放到debug的exe同目录下,便于程序动态加载。

注意事项:对于要导出的函数或者变量,记得在变量或者函数申明的地方加上__declspec(dllexport) 表明该函数或者变量要被导出。



版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-24 22:45:37

windows下动态链接库的创建和使用的相关文章

Windows下C/C++创建一个新进程

本文翻译自:XQQ524148626的专栏,http://blog.csdn.net/xqq524148626/article/details/4960513 本文地址:http://blog.csdn.net/qingdujun/article/details/41808261 VC++6.0运行通过,示例: #include <iostream> #include <windows.h> using namespace std; int main() { STARTUPINFO

Windows 下动态链接库和静态链接库

1.静态链接库:就是在编译的时候把库中代码复制进工程中,导致工程变大,但是速度快. 缺点在于一套代码可能在内存中有多份拷贝,占用内存. 2.动态链接库:库由windos api加载库代码,内存中只有一份拷贝.工程中只保留链接到这份代码的引用,有两种动态链接库, (a)load time dynamic linking:工程运行的时候自动加载,结束时自动卸载 (b) run time dynamic linking: 在工程运行过程中通过调用LoadLibrary()和GetProcAddress

Windows下使用virtualenv创建虚拟环境

操作系统 : windowns10_x64Python版本:3.6.8virtualenv版本:16.7.7virtualenvwrapper版本:1.2.5 方式一:直接使用virtualenv 1.安装pip install virtualenv 2.创建虚拟环境virtualenv -p d:/app/Python36/python.exe py36env 3.启动虚拟环境py36env\Scripts\activate.bat 4.退出虚拟环境deactivate 如果需要删除虚拟环境直

windows下用时间戳创建文件名

英文环境下: echo Archive_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.zip 中文: echo 根据当前日期时间,生成文件名称,...... set YYYYmmdd=%date:~0,4%%date:~5,2%%date:~8,2% set hhmiss=%time:~0,2%%time:~3,2%%time:~6,2% set "filename=WebSite3copy%YYY

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

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

LINUX系统中动态链接库的创建与使用

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

关于windows下创建cocos2d lua工程 无法断点调试 relative (file not exist) 的问题

环境搭建:按照网上给出的攻略,安装pyhton2.7, 下载cocos2d-x-3.x的引擎, 安装VS2012,babelua插件. 创建工程:在cocos2d-x-3.6\tools\cocos2d-console\bin 目录下使用命令 cocos -new HelloLua -p HelloLua -d X:\ 开始编译:除了一些弃用接口和符号数的比较警告之外没有报错,经过我小破机二十几分钟的编译,全部通过,成功生成各种库和Windows下的模拟器. 使用babelua插件创建lua工程

windows下django项目的创建

最近开始学习Django,起步阶段创建项目,在网上看到了Django的教程,编写第一个Django程序,之前安装了Django,所以起初没有什么太大的问题,随着进一步创建项目,发现windows下创建Django是多么不容易的一件事情,又不想整天打开Ubuntu,可能是习惯了windows的系统,实在是不想打开linux系统,那就试着用windows开发,我初步猜测应该是都可以开发的,只是有的可能不是太顺利,下面就刚刚面临的一个问题进行阐述一下,希望跟我一样用windows进行Django开发的

windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)

windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) 简单说几句 在mongodb中3元素:db(数据库).collection(集合).document(文档) 其中collection类似于数据库中的表,document类似于行,这样一来我们就将内容对比起来记忆学习了. 数据格式 MongoDB documents是BSON格式(一种类json的一种二进制形式的存