C++ 中的动态库(Windows)

库:

在C/C++中,使用库(Library)的技术,可以将编译好的符号提供给第三方使用。

库有两种:

1、动态库 Dynamic-Link Library (DLL)    (Linux下叫做 Shared Library)

2、静态库 Static Library

一、动态库的基本概念

创建DLL:

用VC创建一个类型为 “dll”的控制台项目,VC会自动创建DLL的项目框架

它自动生成一个DllMain函数,可以类比普通应用程序中的main函数

VC项目设置:

1、取消“预编译头文件”

2、改为 “/MTd编译”

3、修改输出的DLL的名字 (my.dll)

编译,得到 *.lib 和 *.dll

如果想导出一个全局函数,就用关键字 __declspec(dllexport)来声明

注意:这是VC平台特有的关键字,在linux平台下不可用

使用如下:

template <typename T>
__declspec(dllexport) void MySwap(T& obj1, T& obj2)
{
	T tmp = obj1;
	obj1 = obj2;
	obj2 = tml;
}
时间: 2024-12-22 09:03:25

C++ 中的动态库(Windows)的相关文章

iOS中创建动态库及调用方法

去年因需要用到动态库,自己就找了好多一些 资料,最终找到了一套方法,怎么创建与使用动态库,记录一下: Xcode提供了在iOS工程中创建静态库的功能,和在MAC上创建动态库和静态库的功能. 但是没有提供在iOS工程中创建动态库的功能(苹果官方不允许程序中存在动态库链接,这样的程序会被AppStore拒),如下图:  由于苹果不支持自己创建iOS动态库,所以要想创建动态库首先要修改Xcode的配置文件使其支持具备创建iOS 动态库的功能, 经过调研和查询网上的一些资料,并经过自己测试成功,以下是修

VS中使用动态库

参考链接:http://blog.csdn.net/aaa123524457/article/details/51345718 添加工程引用的dll动态库:把引用的dll放到工程的可执行文件所在的目录下. 先说说静态库的普通的两种方法: 方法1:  通过设置工程配置来添加lib库. 转自网上: A.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. B.添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---

【转】QT中添加 动态库(.so) 和 静态库 (.a) 的方法

http://blog.csdn.net/yzj19870824/article/details/6933737 在QT 的Makefile文件中: 1 添加动态库,如lipcap.so 则,在LIBS一行中添加“-L/usr/local/lib -lpcap”,依据自己的情况修改libpcap.so的路径 2 添加静态库,如libtinyxml.a 则,在LIBS一行添加“/home/yzj/tinyxml/libtinyxml.a”: 在INCPATH一行添加“ -I /home/yzj/t

Go中使用动态库C/C++库

转自:http://studygolang.com/articles/1441 最近需要做一些在go中使用动态C++库的工作,经常碰到找不到动态库路径这种情况,所以就花点时间,专门做一下实验来了解Go. 一.示例代码目录结构(假设代码根目录为/home/gdc/cgotest): ----|bin:----|pkg----|src--------|main------------|main.go--------|oidb------------|hello----------------|hel

Linux中的动态库(共享库)的制作

一.整体大纲 二.共享库的制作 1. 命名规则: lib + 名字 + .so 2. 制作步骤: 1) 生成与位置无关的代码 (生成与位置无关的.o)    2) 将.o打包成共享库(动态库) 3. 发布和使用共享库: 4. 解决程序执行时动态库无法被加载的问题: 1)放到系统的库目录 中 -- 不允许使用 2)临时测试 环境变量: LD_LIBRARY_PATH=将动态库的路径设置给该变量          将设置的值, 导入到系统环境变量中: export LD_LIBRARY_PATH 

【转】分析Linux和windows动态库

原文地址:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.html 摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系 统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系统的动态库由 于格式不同,在需要不同操作系统调用时需要进行动态库程序移植.本文分析和比较了两种操作系统动态库技术,并给出了将Visual C++编制的动态库移植到Lin

c/c++:动态库 静态库 linux/windows 例子 (转)

作者:吴秦出处:http://www.cnblogs.com/skynet/本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). C++静态库与动态库 这次分享的宗旨是——让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择.这里不深入介绍静态库.动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书<程序员的自我修养——链接.装载与库>. 什么是库 库是写好的现有的,成熟的,可以复用的代码.现实中每

windows动态库的问题调试

windows的动态库有几个需要注意的地方,因为相比较linux的动态库而言,需要设置的地方实在太多了. 1.首先需要注意的是运行时库的模式的选择一定要一致的! 原因在于每个dll库的堆管理器都是建立在运行时库crt的副本的基础之上,而每一个库必然有一个运行时库的副本.这里涉及到几个选择问题. 第一,选择mt还是md的问题, 1)mt表示的是mutilt-thread single,表示的多线程的静态运行时库.如果选择这种模式,需要注意的是每个动态库在程序运行时使用的数据以及堆都是建立在各自的运

Linux和windows动态库

转载:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.html 态链接库技术实现和设计程序常用的技术,在Windows和Linux系 统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系统的动态库由 于格式不同,在需要不同操作系统调用时需要进行动态库程序移植.本文分析和比较了两种操作系统动态库技术,并给出了将Visual C++编制的动态库移植到Linux上的方法