c++动态库与静态库
windows下:
在进行库创建的时候会用到导出符号,在函数,类的声明处直接指出。
静态库:用的时候通常将 #pagram (lib,"name"),包含头文件,可以使用任何导出类。
动态库:利用Loadlibrary等函数获得动态的东西使用,针对导出含有类的库,如果要使用其中的类,不管是静态库还是动态库,都需要包含相关的头文件,特别是基类的头文件。
linux:
在进行库的创建的时候,只有在编译的时候会用到相应的参数,如-shared,在类,函数的声明处没有额外的导出参数。
静态库:用的时候直接包含库,以及相关需要的头文件即可,注意路径。其实是所以.o文件的压缩包。
动态库:用的时候会用到#include<dlfcn.h>里的库函数,如dlopen等,其余的使用与windows下使用类似。
通用:
无论是在windows下还是linux下,对于还有类的导出是避免不了的,一种方法是把需要的类全部加上导出符号导出,但是这种方法非常不明智;另一种方法是充分利用抽象类的作用(可以从抽象类派生出需要的实用的类),在生成相关库的时候是遵守相关约定的,因此,可以充分利用这一点,然后暴漏接口。针对这一点,具体可以参考下面的网址:
http://blog.csdn.net/clever101/article/details/3034743
以及本人博客之后的《c++导出dll类》一文。
其它可用资源:
http://blog.csdn.net/xuguang121/article/details/7457565
c++动态库与静态库的更多相关文章
- 【转】iOS动态库和静态库的简要介绍
静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人 ...
- ios 开发中 动态库 与静态库的区别
使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...
- Linux中的动态库和静态库(.a/.la/.so/.o)
Linux中的动态库和静态库(.a/.la/.so/.o) Linux中的动态库和静态库(.a/.la/.so/.o) C/C++程序编译的过程 .o文件(目标文件) 创建atoi.o 使用atoi. ...
- Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名
Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名 转载自:http://b ...
- Linux系统中“动态库”和“静态库”那点事儿【转】
转自:http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻. ...
- libjpeg 交叉编译动态库和静态库
1.下载libjpeg库,解压之 得到了jpeg6b和libtool-2.2.4两个文件夹. 2.编译安装libtool工具. 这是配置libtool,这里需要注意:configure 参 ...
- VS2008 动态库和静态库的生成和加载
第一:动态库和静态库的生成: 1) 新建一个生成dll工程: 文件->新建->项目->Win32->Win32控制台应用程序 输入项目名称:dllTest ,项目路径:D:\V ...
- 技巧:Linux 动态库与静态库制作及使用详解
技巧:Linux 动态库与静态库制作及使用详解 标准库的三种连接方式及静态库制作与使用方法 Linux 应用开发通常要考虑三个问题,即:1)在 Linux 应用程序开发过程中遇到过标准库链接在不同 L ...
- Linux系统中“动态库”和“静态库”那点事儿
摘自http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在 ...
- linux --> 动态库和静态库
库的分类 根据链接时期的不同,库分为静态库和动态库之分. 静态库:在链接阶段被链接的,生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 动态库:在程序执行的时候被链接的,即使程 ...
随机推荐
- eclipse中集成svn maven开发手册---导入项目
一,导入项目 二,创建提分支 三,maven编译打包 四,合并主干 一,导入项目 右键,import,选择从svn检出项目 点击next,如图 如果是第一次导入,选择创建新的资源库,点击next,输入 ...
- Grunt构建工具插件篇——之less工具2
Grunt任务分为两部分,一部分是任务,即Grunt要执行的代码,找到对应功能的插件就成.所以等会要下载grunt-contrib- less包,这个插件便是把less文件编译成能直接使用的css.另 ...
- systemd学习
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html http://www.ruanyifeng.com/blog ...
- C#子窗口与父窗口交互(使用委托和事件)
目标:在子窗口Form2上单击按钮时向Form1传递一组自定义参数,并显示在父窗口Form1上. 方法:有很多方法,这里只介绍委托和事件的实现方式. 思路:Form2中定义事件,Form1创建Form ...
- 限制EditText的输入字数
private EditText edit_student_name; edit_student_name.addTextChangedListener(changeStudentNameWatche ...
- java_web学习(2)Servlet
软件编程体系 B\S 系统架构与C\S 系统结构 Web服务器 HTTP 协议:Web 浏览器与 web 服务器的交互所遵循的规则. Web 服务器:Web服务器可以解 ...
- endnote X7 加入文献
endnote可以管理文献,并且在word中方便的添加参考文献. 1.加入文献: 2.导入以后可以创建自己的group,然后把导入的参考文献拖到group里,这样方便在插入参考文献的时候用group名 ...
- js原生之一个面向对象的应用
function IElectricalEquipment() { } IElectricalEquipment.prototype = { poweron: fu ...
- 画廊视图(Gallery)的功能和用法
Gallery与Spinner组件有共同的父类:AbsSpinner,表明Gallery和Spinner是同一个列表框.它们之间的区别是Spinner显示的垂直的列表选择框,而Gallery显示的是一 ...
- spring mvc上传下载文件
前端jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...