当前位置: 首页 > news >正文

一起做网站逛市场图书馆网站建设情况汇报

一起做网站逛市场,图书馆网站建设情况汇报,学网页制作的好处,辽宁建设工程信息网备案下面我们将用两种不同的姿势来用VS2017生成dll文件#xff08;动态库文件#xff09;和lib文件#xff08;静态库文件#xff09;#xff0c;这里以C语言为例#xff0c;用最简单的例子#xff0c;来让读者了解如何生成dll文件#xff08;动态库文件#xff09; 生成动…下面我们将用两种不同的姿势来用VS2017生成dll文件动态库文件和lib文件静态库文件这里以C语言为例用最简单的例子来让读者了解如何生成dll文件动态库文件   生成动态库文件 姿势一 第一步新建一个项目   第二步选择Windows桌面向导这里先不要去管上面的“动态链接库(DLL)”    第三步选择动态链接库并空项目打勾√    第四步添加一个.c源文件   第五步因为这里以C语言为例子将后缀改为.c   第六步在c文件中输入一个简单的函数这里使用了_declspec(dllexport)但_declspec(dllexport)并不是必须的后面一种方法将不使用_declspec(dllexport) _declspec(dllexport) int sum(int a, int b) {return a b; }   第七步新建一个头文件    第八步在头文件中输入函数的声明   第九步编译   第十步Debug文件夹下的两个文件DLL.dll和DLL.lib就是我们要使用的两个文件了 因为使用的_declspec(dllexport)虽然这里我们只编译了一次却生成了dll和lib两个文件     姿势二   第一步到第五步和上面的步骤一模一样这里从第六步开始讲起   第六步在c文件中输入一个简单的函数注意这里就没有使用_declspec(dllexport)   第七步添加一个头文件   第八步在头文件中输入函数的声明   第九步编译   第十步这时在Debug文件里就可以看出两种方法的区别了第二种方法没有加 _declspec(dllexport) 只有一个dll文件如果我们也想要lib文件需要额外几个步骤   生成lib文件   第十一步点击项目——》DLL属性   第十二步配置属性——》项目默认值——》配置类型把动态库(.dll) 改为 静态库(.lib)   第十三步编译   第十四步这个时候Debug文件夹里面就多出了一个lib文件 从上面两个例子可以看出 在生成dll文件动态库文件时如果不使用_declspec(dllexport)那么就只有dll文件在这种情况下就无法使用#pragma comment来隐式装载动态库因为需要lib文件只能使用LoadLibrary来显式装载动态库使用Loadlibrary只需要dll文件 如果使用了_declspec(dllexport)那么就既有dll文件也有lib文件   还有一点需要注意的是如果在源文件.c文件中函数的定义没有_declspec(dllexport)但是在头文件中函数的声明使用了_declspec(dllexport)此时编译产生的文件只有dll文件如果改成源文件中有_declspec(dllexport)头文件中没有_declspec(dllexport)那么编译产生的文件既有dll文件也有lib文件 导出dll文件时最好还是在源文件和头文件中都加上_declspec(dllexport) 笔者记录了一下加与不加_declspec(dllexport)对导出dll文件大小的影响以上面的代码为例 造成dll文件大小不同的原因笔者暂时无法给出解释待补充     生成静态库文件   和生成dll文件步骤相似这里就不再赘述了直接上图 第一步   第二步建议把预编译标头的勾去掉不去掉也没事只是本文为了简洁让读者更清楚的生成步骤   第三步   第四步   第五步 在源文件中输入以下代码 int sum(int a, int b) {return a b; }   第六步   第七步   第八步   第九步编译可以看到Debug文件夹下有一个lib文件   注意不要像我一样傻fufu的在导出lib文件的时候还加上_declspec(dllexport)之前我的确这么干过如果加了_declspec(dllexport)在Debug文件夹里面也只有lib文件lib文件也能正常使用 但是不建议加 还有一点就是生成dll文件动态库文件时产生的lib文件和生成lib文件静态库文件时产生的lib文件的作用不相同从文件大小也能看出来一个1.58KB一个3.92B 关于lib和dll文件的区别可以看一下这一盘文章lib 和 dll 的区别、生成以及使用详解    笔者记录了一下加与不加_declspec(dllexport)对导出lib文件大小的影响以上面的代码为例 至于为什么加了_declspec(dllexport)后lib文件会出现0.02KB的差别笔者暂时无法给出解释待补充   有的读者可能会发现在网上很多博客写关于生成dll文件时头文件里面的写法是这样的   刚接触预处理命令的读者看着可能会有点不好理解下面对上面的头文件中的代码逐个分析笔者将上面的代码分为两个个部分对预处理命令不是很熟悉的读者可以先看一下这一篇随笔 预处理命令使用详解----#if、#endif、#undef、#ifdef、#else、#elif 第一部分 #pragma once #ifdef DLL_EXPORTS #define DLL _declspec(dllexport)#else #define DLL _declspec(dllimport)#endif 把上面的代码翻译一下就是如果DLL_EXPORTS这个宏名已经被定义那么DLL就等价于_declpsec(dllexport)否者DLL就等价于_declspec(dllimport),#pragma once保证了该头文件只被包括#include一次 在很多头文件中都可以看到#pragma once比如stdio.h 读者这个时候可能就有疑问了明明我没有#define DLL_EXPORTS为什么是执行#define DLL _declspec(dllexport)而不是#define DLL _declspec(dllimport)呢 首先读者需要知道的是DLL_EXPORTS是一个预定义的宏因为我们是生成的是DLL文件 可以在属性-配置属性-C/C-预处理器中看到 现在读者应该清楚了在生成DLL文件时编译器已经预定义了DLL_EXPORTS这个宏名如果我们是生成的应用程序 上面的代码写成 #ifdef#else#endif 这种形式是为了方便在使用的时候lib或者dl文件时需要引入头文件的时候方便一点不需要对头文件做任何的修改因为如果我们使用的配置类型是“应用程序(.exe)”那么就没有预定义DLL_EXPORTS   第二部分 #ifdef _cplusplus extern C { #endifDLL int sum(int a, int b); #ifdef _cplusplus } #endif 把上面的代码翻译一下就是如果是C文件.cpp后缀那么就是 extern C {DLL int sum(int a, int b); } 如果不是C文件那么就是 DLL int sum(int a, int b); 关于extern C作用可以看一下这篇文章深入理解C/C混合编程关于#ifdef __cplusplus extern C {...}的用法   总结一下 生成动态库文件   头文件 1 #pragma once2 #ifdef DLL_EXPORTS3 #define DLL _declspec(dllexport)4 5 #else6 #define DLL _declspec(dllimport)7 8 #endif9 10 #ifdef _cplusplus 11 extern C 12 { 13 #endif 14 DLL int sum(int a, int b); 15 #ifdef _cplusplus 16 } 17 #endif   源文件 1 _declspec(dllexport) int sum(int a, int b) 2 { 3 return a b; 4 }   编译之后产生   生成静态库文件   头文件 1 #pragma once2 3 #ifdef _cplusplus4 extern C5 {6 #endif7 int sum(int a, int b);8 #ifdef _cplusplus9 } 10 #endif   源文件 1 int sum(int a, int b) 2 { 3 return a b; 4 }   编译后产生   到这里本文就基本结束了上面详细叙述了生成dll文件动态库文件和lib文件静态库文件的步骤关于lib文件和dll文件的使用将在另一篇随笔中详细介绍转载于:https://www.cnblogs.com/lanhaicode/p/10798385.html
http://www.yutouwan.com/news/416098/

相关文章:

  • 网站推广的岗位要求莱州教体局网站
  • 网站说服力 营销型网站策划深圳网站公司有哪些
  • 青岛哪家做网站的公司好产品推广软文
  • 网站怎么使用模板网站开发公司外包
  • 重庆网站建设 渝html5中国网站欣赏
  • 连接外国的网站吗电脑做网站服务器WIN7 买个域名
  • 南通企业自助建站系统ui设计师创意平台
  • 做网站域名起什么作用房屋装修效果图app有哪些
  • ps图做ppt模板下载网站有哪些做网站i3够用吗
  • 广州萝岗网站建设站长工具seo综合查询权重
  • 无锡自助做网站网站收录没排名
  • 玉溪市网站建设推广郑州知名网站建设服务公司
  • 微营销网站建设wordpress添加主题不显示
  • 做网站需要什么手续资料网站关键词突然没有排名了
  • 贵阳网站开发哪家专业中小企业网站规划方案
  • 电子商务与网站平台建设的关系北滘禅城网站建设
  • 网站没有后台登陆文件夹上海好牛网站建设
  • 免费网站注册域名短视频app成品搭建源码免费
  • 永州建设网站小米发布会13
  • 淘宝这种网站怎么做的wordpress 自定义分类 模板
  • 免费网站下载直播软件大全备案时注意网站名称规范
  • 国际网站推广专员招聘wordpress+dux使用
  • 网站外部链接怎么做流量多网站
  • 移动端网站开发公司中国排名前十的广告公司
  • 类似京东的购物网站开发价格网站备案为什么要关闭
  • 可以自己做攻略的网站四川建设厅的网站
  • 何炅做的网站广告农安县建设局官方网站
  • 站长工具同大全站wordpress 显示代码
  • 简述网站的建设流程图课程网站建设规划方案
  • 常州市教育基本建设与装备管理中心网站视频如何上传到wordpress