1.一个程序从源文件编译生成可执行文件的步骤: 预编译 -->  编译 -->  汇编 --> 链接 (1)预编译,即预处理,主要处理在源代码文件中以“#”开始的预编译指令,如宏展开.处理条件编译指令.处理#include指令等. (2)编译过程就是把预处理完的文件进行一系列词法分析.语法分析.语义分析以及优化后生成相应的汇编代码文件. (3)汇编是将汇编代码转变成二进制文件. (4)链接将二进制文件链接成一个可执行的命令,主要是把分散的数据和代码收集并合成一个单一的可加载并可执行的的文…
Windows下静态库与动态库的创建与使用 学习内容:本博客介绍了Windows下使用Visual C++ 6.0制作与使用静态库与动态库的方法. --------CONTENTS-------- 一.什么是静态库与动态库? 1.静态库 2.动态库 二.静态库的创建与使用 1.静态库的创建 2.静态库的使用 三.动态库的创建与使用 1.动态库的创建 使用.def文件 使用关键字_declspec(dllexport) 2.动态库的使用 隐式链接 显式链接 附:参考资料 一.什么是静态库与动态库?…
1.DLL的隐式调用 隐式链接采用静态加载的方式,比较简单,需要.h..lib..dll三件套.新建“控制台应用程序”或“空项目”.配置如下: 项目->属性->配置属性->VC++ 目录-> 在“包含目录”里添加头文件testdll.h所在的目录 项目->属性->配置属性->VC++ 目录-> 在“库目录”里添加头文件testdll.lib所在的目录 项目->属性->配置属性->链接器->输入-> 在“附加依赖项”里添加“tes…
DLL即动态链接库(Dynamic-Link Libaray)的缩写,相当于Linux下的共享对象.Windows系统中大量采用了DLL机制,甚至内核的结构很大程度依赖与DLL机制.Windows下的DLL文件和EXE文件实际上是一个概念,都是PE格式的二进制文件.一般的动态库程序有lib文件和dll文件,lib文件是编译时期连接到应用程序中的,而dll文件是运行时才会被调用的. 为了更好的理解DLL,首先介绍一下导出和导入的概念. (1)导出与导入 在ELF(Linux下动态库的格式),共享库…
多年的工作经验告诉我Windows下使用动态库最简单的方法:使用def导出函数,然后隐式调用. 具体做法如下: (1)首先使用visual studio 创建“Win32项目”,如下图: (2)然后在下面页面选择“DLL”并去掉“预编译头”,点击“完成”即可创建动态库,如下图: (3)为了方便导出符号,我们采用def文件,相比使用__declspec(dllexport)来的更方便,def文件添加如下图,请保持文件命名和动态库命名一致: (4)编辑def文件,具体的def文件的语法规则参见微软的…
静态库和动态库的使用包括两个方面,1是使用已有的库(调用过程),2是编写一个库供别人使用(创建过程).这里不讲述过多的原理,只说明如何编写,以及不正确编写时会遇见的问题. //注:本文先从简单到复杂,动态库的部分先说明了静态链接方式,比较简单,若想看动态链接过程会遇到的问题可直接跳过. 后面说明动态链接方式有关extern "C” .名字改变. __stdcall 的影响的问题. 1.静态库 1)创建过程 在VS环境下创建一个 “Win32 Static Libarary” 工程StaticLi…
1.MFC下生成动态库 1>显式调用 在.cpp文件里添加接口函数 int sum(int a,int b) { return a + b; } int sub(int a,int b) { return a - b; } 在.def文件里标示导出接口  sum @ sub @; 编译即可生成动态库 在.exe里调用 在头文件里添加 #pragma comment(lib,"TestDLL") int sum(int a,int b); int sub(int a,int b);…
关于zlib库和libpng是干嘛的,我就不说了,度娘和谷歌都能告诉你.这里主要记录下windows下如何利用vs2010编译和使用这两个库. 一.zlib库的编译 首先要下载这个库,这个谷歌和百度也都可以找得到的.我下载的是zlib-1.2.5,下载完解压出来即可.下边就开始编译吧.(包括动态库和静态库两种) 1. 首先开启VS2010的Command Prompt (32bit),也就是命令提示窗口. 2. 进入到zlib-1.2.5/contrib/masmx86目录,执行bld_ml32…
Windows下的多线程 http://blog.csdn.net/ganpengjin1/article/category/2541791 使用C/C++建立DLL,环境VS2013 新建Win32工程,下一步,类型选择DLL 选中导出符号.不选空项目,让系统生成所需文件. 为了生成和使用的项目使用同一组头文件,一般使用这样的: #ifdef MYLIB_EXPORTS #define MYLIB_API __declspec(dllexport) #else #define MYLIB_AP…
在windows下进行项目开发,使用git,通过ssh方式与git库连接,而ssh方式用public key实现连接. 首先需要下载mygit,安装后使用git bash.git bash(有GUI界面,如安装TortoiseGit后就可以使用).我主要使用命令行,其命令行系统类似linux环境的基本操作命令,可以直接看到c:,如cd /d/mygitwork,进入我的D盘下的工程目录,放置开发的工程. 我的操作:在windows的git bash中用ssh -keygen ssh -keyge…
zint库是一个开源的第三方库,提供了生成条形码.二维码等功能.本文主要介绍zint库的生成及简单应用.   0windows下zint库的编译及应用(一)   工具/原料   vs2012 生成条形码   1 新建vs的控制台项目 2 将zint的头文件放到d:/opt/include目录下,把zint的库文件放到d:/opt/lib目录下 3 在项目的包含目录中添加d:/opt/include路径,在附加依赖库中添加d:/opt/lib/libzint.lib 4 在main函数中添加下列代…
zint库是一个开源的第三方库,提供了生成条形码.二维码等功能.本文主要介绍zint库的生成及简单应用. 工具/原料   vs2012 代码文件下载   1 下载zint包 2 zint依赖另外两个库zlib和libpng 3 将下载到的三个文件解压到同一个文件夹下 END 编译zlib/lpng库   1 在解压后的lpng1632/projects/vstudio目录下,打开vstudio.sln,能看到zlib库和libpng库两个工程 2 在编译zlib库时,会提示路径错误,这是因为下载…
virtualenv虚拟环境为每个项目隔离了一套运行类库,不同的项目在各自的虚拟环境中使用不同的类库,避免了将所有类库都安装到系统环境中导致的不同项目需要不同(版本)类库的问题,项目与项目之间的类库依存不再成为问题. 首先使用 pip 命令安装 virtualenv 进入 cmd 命令行界面查询版本:virtualenv --version 进入 cmd 命令行界面使用 virtualenv venv 创建名为 venv 的虚拟环境: 启动虚拟环境(这点和 linux 下的使用不一样):在当前路…
下载PTHREAD的WINDOWS开发包 pthreads-w32-2-4-0-release.exe(任何一个版本均可)   http://sourceware.org/pthreads-win32/ ,解压到一个目录. 1.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. 2.添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录.         然后添加…
目录:       1.pip安装(需要pip)       2.通过下载whl文件安装(需要pip)       3.在pythn官网下载安装包安装(不需要pip)   方法一:pip安装. 这是最常用的python安装方法,新版的python一般自带pip.exe程序,在如我的就在C:\Python27\Scripts目录下这时候我们在CMD中打pip就可以看到一些版本信息如图:                                这个时候我们就可以使用指令 pip install…
参考 静态链接 VS 动态链接 静态库 VS 动态库 实验环境 OS:Windows10 企业版 IDE:Visual Studio 2017旗舰版 前言 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了.但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件.静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静…
因为boost都是使用模板的技术,所以所有代码都是写在一个.hpp头文件中.这样boost中的大部分内容是不需要编译生成相应的链接库,只需要设置下面的包含目录(或者设置一下环境变量),在源文件中包含相应的头文件就可以使用了.少部分库需要生成链接库来使用. 下面介绍完整安装boost库的方法: 1.首先到boost官网去下载最新的版本的boost库: http://www.boost.org/ 2.解压文件,在命令提示符中打开到boost库的根目录下: 双击bootstrap.bat文件,生成bj…
介绍使用TortoiseGit初次创建并上传到gitlab项目库,转载请注明出处. 一.需要先安装git环境,并配置Git用户名及邮箱. 二.用PuTTYgen生成公约私钥对(鼠标画画).PuTTYgen在装Tortoise时自己会安装好.生成后保存公私钥在电脑上,并将公钥复制到gitlab上. 保存如下,文件名称须自命名: 公钥一般以ssh-rsa开头: 在gitlab网页的ssh密钥管理界面添加好公钥.在个人设置界面设置: 三.打开Pageant添加.配置本机的私钥,以求与gitlab关联上…
以前开发的时候用得比较多的是mysql和sql server,oracle用的比较少,用起来比较生疏,mysql和sql server用起来比较类似,就oracle的使用方式和他们不同,oracle在创建数据库的时候要对应一个用户,数据库和用户一般一一对应,mysql和sql server 直接通过create databse “数据库名” 就可以直接创建数据库了,而oracle创建一个数据库需要以下三个步骤: 创建两个表空间(即所谓的数据库)的文件 创建用户与上面创建的文件形成映射关系 给用户…
英文环境下: 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…
Bonobo Git Server 下载地址: https://bonobogitserver.com/ 安装方法:https://bonobogitserver.com/install/ 配置简单,基于.net平台的MVC网站…
操作系统 : 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 平台还是Linux平台下都存在大量的库,但由于Windows 和Linux 的本质不同,因此二者的库的二进制是不兼容的. 库的分类  Windows 下的库有两种:静态库(.lib)和动态链接库(.dll). Linux 下的库有两种:静态库(.a)和共享库(.…
什么是库   库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的.它们通常由一组互相关联的用来完成某项常见工作的函数构成,从本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.   无论在Windows平台还是在Linux平台下都存在大量的库,但由于Windows和Linux的本质不同,因此二者的库的二进制是不兼容的.   库的分类   Windows下的库有两种:静态库(.lib)和动态链接库(.dll). Linux下的库有两种:静态库(.a)和共享库…
Windows与Linux系统下的库介绍 http://embeddedlinux.org.cn/emb-linux/entry-level/200903/12-553.html 库的定义 库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的.它们通常由一组互相关联的用来完成某项常见工作的函数构成,从本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 无论在Windows平台还是Linux平台下都存在大量的库,但由于Windows和Linux的本质不同,因…
最近看书介绍rundll32可以加载dll文件并执行其中导出函数,在MSDN中我们可以看到绍http://support.microsoft.com/kb/164787/zh-cn rundll32调用的函数要有特定的格式如下图:   hwnd - 窗口句柄,它应该用作 DLL 创建的任何窗口的所有者窗口 hinst - DLL的实例句柄 pszCmdLine - DLL应分析的字符串 lnCmdShow - 描述DLL的窗口应如何显示   我们可以看到有的脚本中直接用rundll32.exe直…
由于PHP5.3 的改进,原有的IIS 通过isapi 方式解析PHP脚本已经不被支持,PHP从5.3.0 以后的版本开始使用微软的 fastcgi 模式,这是一个更先进的方式,运行速度更快,更稳定.本文介绍在IIS上以FastCGI模式运行PHP.我们以 Windows 2003 + IIS 6.0(windows2003自带) 为例. 第一步:下载安装的文件 1. FastCGI 版本 fcgisetup_1.5_x86_rtw.msi2. MySQL 版本 mysql-5.5.19-win…
最近在研究Zero的使用. 我在网上找了一下,发觉大部分博客都写得乱七八糟,又不写明什么版本,什么系统下的,我都不知道怎么样才能弄出个编译过的程序来,只好自己摸索了. 我是windows下 使用vs2010的,v4.0.4的版本官方 0mq api 好像还没加上去,我是参照老版本(v3.1)的用法来的. 使用前你要对windows下动态库的使用有个基本了解.我的上一篇博客有讲,但有点乱,有时间再改一改. 这里我是用了动态库的隐式连接,需要动态库的 动态库文件".dll" , 动态库的L…
转:http://www.cnblogs.com/wu-wenmin/p/4250330.html 写在前面的话 最近在看"Computer Vision with Python"需要安装PIL库,平时一直在windows下开发,就去"Python Extensions for Windows"下找找看,结果下下来文件的拓展名是.whl.Google了一番才知道安装这种拓展名的包需要pip.平时习惯用.exe安装包,easy_install.pip都没装.扒拉点资料…