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

【合并lib】windows下多个lib合并的方法|查看lib是导入库还是静态库

静态库:VS工程设置为生成lib

导入库:VS工程设置为生生成DLL,VS生成DLL的同时 生成一个lib,这个就是导入库。只记录函数在DLL的位置没有实现函数

方法一:

       VS项目-》属性-》配置属性-》库管理器-》常规-》附加依赖项---> 添加需要合并的静态库lib

       --->附加库目录    添加需要合并的静态库lib 所在的路径


方法二:

    开始-》所有程序-》Microsoft Visual studio 2010-》visual studio tools-》Visual studio 命令提示符

    在出来的Dos窗口中,输入命令:

  lib.exe /out:objectlib.lib lib1.lib lib2.lib

该目录下会生成合并后的lib库object.lib

  (或lib.exe /out:D:\objectlib.lib   D:\mylib\*.lib   将D:\mylib目录下的lib合并为objectlib.lib)存在D目录下)

  
原文:https://blog.csdn.net/listener51/article/details/78343070

查看lib是导入库还是静态库的方法

lib /list [文件名] 显示dll的是导入库,显示.obj或者.o是静态库

例如:

  开始-》所有程序-》Microsoft Visual studio 2010-》visual studio tools-》Visual studio 命令提示符

lib.exe  /list   C:/a.lib

lib导入库有什么用

 通过前面三篇的介绍,静态lib库,就完全讲清楚了。那么这里我们来介绍一下lib导入库。虽然lib导入库不是很重要,但是为了方便使用dll,lib导入库还是很常用。但是没有lib导入库,也是可以使用dll的。所以说,lib导入库是一个附加的增值产品。
   dll是用来动态链接的,也就是程序运行时才链接的。静态链接就是在生成exe时就链接到exe里了。链接最终的目的是要将dll载入到和exe同一个进程空间中。尽管这里是动态链接,它只是在链接的时间上延迟罢了。静态链接时,直接在生成时将库的内容放在了exe中,当exe文件加载到内存时,链接的库的内容也加载到内存了。动态链接库dll则是在生成exe的时候只用了一个占位表,叫做重定位表。然后在exe需要的时候,再将dll加载到exe所在的进程的内存空间中。
   所以说,不管是静态链接还是动态链接,最终都是要到exe的进程内存空间中的,是跑不了的。躲得了初一躲不了十五,dll只是延迟加载到内存罢了。
   我们要使用dll,为了方便知道dll中的所有函数都在什么位置,就用上了lib导入库。这个导入库记录了dll中的所有函数在dll中的位置,那么我们引入了lib导入库之后,在运行的时候,在加载了dll后,就可以方便的定位需要的函数了。有了这个lib导入库,我们不需要手动的去找dll中的函数了。使用dll就和静态lib库或者和直接的源码中写的函数一样简单。
   另一种就不用lib导入库了,使用API函数LoadLibrary来加载dll到内存中,然后使用API函数GetProcAddress来找到dll中的函数地址。这里的使用,将在dll的专题中讲解,就不多述了。

原文:http://www.cjjjs.com/article/201510250529375

相关文章:

  • 【python】anaconda 安装第三方包
  • 【IP/TCP】127.0.0.1和localhost和本机IP三者的区别
  • 【C/C++相互调用】C调用C++库和C++调用C库的方法
  • [STL]C++ STL中常见容器的时间复杂度
  • 【STL map】map用法、插入方法、pair和make_pair的区别
  • 【字符编码】 简洁理解ANSI,UTF8,Unicode,ASCII编码的差别
  • [MYSQL]mysql将两个表结果合并到一起
  • 【MYSQL】mysql把字段进行逗号分隔成多条数据
  • 【python备份】Python备份CSDN完整博客 研读
  • 【python】Python中yield的理解与使用|python生成器
  • 【数据结构】八大数据结构分类 研读笔记
  • 【python】list、tuple、dict、set、dataframe、narray、series之间的区别
  • 【python】python3.7数据分析入门学习笔记 研读
  • 【VS输出UTF8】 C++ 控制台程序中输出UTF8字符乱码问题解决方法
  • 【python】python一些热点问题
  • [NodeJS] 关于Buffer
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • CSS 专业技巧
  • echarts花样作死的坑
  • magento 货币换算
  • Sublime text 3 3103 注册码
  • 给初学者:JavaScript 中数组操作注意点
  • 欢迎参加第二届中国游戏开发者大会
  • 基于webpack 的 vue 多页架构
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 聊一聊前端的监控
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 深入 Nginx 之配置篇
  • 双管齐下,VMware的容器新战略
  • 运行时添加log4j2的appender
  • linux 淘宝开源监控工具tsar
  • MyCAT水平分库
  • ​卜东波研究员:高观点下的少儿计算思维
  • #NOIP 2014# day.2 T2 寻找道路
  • (52)只出现一次的数字III
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (solr系列:一)使用tomcat部署solr服务
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (二)斐波那契Fabonacci函数
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (六)Hibernate的二级缓存
  • (转)Sql Server 保留几位小数的两种做法
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .net访问oracle数据库性能问题
  • /3GB和/USERVA开关
  • [100天算法】-目标和(day 79)
  • [1127]图形打印 sdutOJ
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • [2016.7.Test1] T1 三进制异或
  • [C++]模板与STL简介
  • [C++]四种方式求解最大子序列求和问题
  • [Django开源学习 1]django-vue-admin
  • [IOI2007 D1T1]Miners 矿工配餐