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…
参考博客: https://blog.csdn.net/muyouhang/article/details/54773265 https://blog.csdn.net/hhh0209/article/details/79830988 新建caffe的属性表,caffe_gpu_x64_release.props 将NugetPackages,caffe,CUDA中的头文件加进去 属性-C/C++-附加包含目录: D:\caffe20190311\NugetPackages\OpenCV.2.4…
不废话,unix下c++调用 redis可以看这个: http://blog.csdn.net/youngqj/article/details/8266177 ================================================================================== redis的官网版本并没有为vc开发提供接口,不过微软对redis好像很感兴趣,自己弄了一个 ,完整的英文说明在这里: https://gist.github.com/MS-…
不废话,unix下c++调用 redis可以看这个: http://blog.csdn.net/youngqj/article/details/8266177 ================================================================================== redis的官网版本并没有为vc开发提供接口,不过微软对redis好像很感兴趣,自己弄了一个 ,完整的英文说明在这里: https://gist.github.com/MS-…
这个随笔涉及到几个批处理脚本得知识点. windows的start命令, 启动另一个窗口运行指定的程序或命令. windows的call命令, 从批处理程序调用另一个程序, 直到被调用程序退出, 再继续原先的批处理程序 参数: windows, %0为shell 本身, %1为第1个参数, 以此类推 linux, $0为shell 本身, $1为第1个参数, 以此类推 返回值: windows:当一个命令完成后, 可以使用 %errorlevel% , 获得 exit code linux: 可…
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下用C语言调用文件选择对话框,以备忘 #define DEFAULT_DIR "" char extraction_path[MAX_PATH] = DEFAULT_DIR; /* * Browse for a folder and update the folder edit box * Will use the newer IFileOpenDialog if *compiled* for Vista or later */ void browse_for…
在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…
dll是windows下的动态链接库文件,下面记录一下在windows下如何调用C语言开发的dll动态链接库. 1.dll动态链接库的源代码 hello_dll.c #include "stdio.h" _declspec(dllexport) void test_print(char const *str) { printf("%s\n", str); } _declspec(dllexport) int test_add(int a, int b) { retu…
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函数中添加下列代…
目录 软件环境 Windows下CMake编译配置 设置项目的generator Command Line CMake GUI PreLoad.cmake 设置make 示例程序 CMake 设置Fortran语言的一个小问题 source/hello.cpp source/caller.cpp source/caller.f90 参考资料 软件环境 # 操作系统 = Windows10 # 编译链工具 = # gcc, g++, GNU Fortran (MinGW.org GCC Build…
本文转自:http://1316478764.iteye.com/blog/2100778 curl是利用URL语法在命令行方式下工作的开源文件传输工具.它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP. 一.windows下curl的安装 1.      到这里http://curl.haxx.se/download/下载文件curl-7.17.1-win32-ssl.zip,如果不需要使用ssl的话,可以直接…
zint库是一个开源的第三方库,提供了生成条形码.二维码等功能.本文主要介绍zint库的生成及简单应用. 工具/原料   vs2012 代码文件下载   1 下载zint包 2 zint依赖另外两个库zlib和libpng 3 将下载到的三个文件解压到同一个文件夹下 END 编译zlib/lpng库   1 在解压后的lpng1632/projects/vstudio目录下,打开vstudio.sln,能看到zlib库和libpng库两个工程 2 在编译zlib库时,会提示路径错误,这是因为下载…
下载PTHREAD的WINDOWS开发包 pthreads-w32-2-4-0-release.exe(任何一个版本均可)   http://sourceware.org/pthreads-win32/ ,解压到一个目录. 1.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. 2.添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录.         然后添加…
0,目标 本人计算机环境:windows7 64位,安装了vs2015专业版,python3.5.2,cygwin,opencv3.3,无gpu 希望实现用python调用yolo函数,实现物体检测. 1,踩过的坑 一开始下载了github上最热的开源项目https://github.com/pjreddie/darknet 采用cygwin编译,make后生成了darknet.exe, libdarknet.so和libdarknet.a. 在windows命令行采用darknet.exe,加…
手动调用exe或者启动服务很麻烦,可以使用.bat批处理文件,双击运行即可.步骤如下:创建一个新的txt文件但是保存成.bat结尾的文件(选择用记事本打开编写命令),输入代码内容格式如下: @echo off start "" "exe文件路径" 举例:---------------记事本中内容---------------@echo offstart "" "D:\Program Files\Tencent\QQ\QQ.exe&quo…
目录:       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…
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; public class TestMac { public static void main(String[] args) { System.out.println("Operation System=" + getOsName());…
node.js调用bat需要用到Child Processes模块 因为bat是文件,所以需要使用execFile方法   如果指定了cwd,它会切换bat执行的目录,类似cd的功能,如果未指定默认为当前调用程序的目录.如果bat有输出错误,例如创建指定的文件/目录已经存在时,会返回一个错误信息时,调用bat会得到一个相关的错误信息:Error {killed: false, code: 1, signal: null} process.execFile(url, [1, 2], {cwd:'D…
库的定义  库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的.它们通常由一组互相关联的用来完成某项常见工作的函数构成,从本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 无论在Windows 平台还是Linux平台下都存在大量的库,但由于Windows 和Linux 的本质不同,因此二者的库的二进制是不兼容的. 库的分类  Windows 下的库有两种:静态库(.lib)和动态链接库(.dll). Linux 下的库有两种:静态库(.a)和共享库(.…
什么是库   库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的.它们通常由一组互相关联的用来完成某项常见工作的函数构成,从本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.   无论在Windows平台还是在Linux平台下都存在大量的库,但由于Windows和Linux的本质不同,因此二者的库的二进制是不兼容的.   库的分类   Windows下的库有两种:静态库(.lib)和动态链接库(.dll). Linux下的库有两种:静态库(.a)和共享库…