VS下生成与配置静态库与动态库(二)
来源:互联网 发布:linux proc net dev 编辑:程序博客网 时间:2024/05/22 15:53
前面一篇介绍了VS下静态库的编译和使用,这一篇将介绍动态库的生成和使用方法。
生成动态库:
1.新建一个Win32控制台项目,去掉预编译文件头,工程命名为“test”;
2.添加用于构建动态库的代码段,放在“test_exports.h”中
#pragma once;#ifndef TEST_EXPORTS_H_#define TEST_EXPORTS_H_#ifdef TEST_API_EXPORTS#define TEST_EXPORTS __declspec(dllexport)#else#define TEST_EXPORTS __declspec(dllimport)#endif
#endif //#ifndef TMESH_EXPORTS_H_简单说明一下上面的宏定义:
如果定义了宏 TEST_API_EXPORTS,则将TEST_EXPORTS定义为__declspec(dllexport);
否则,将TEST_EXPORTS定义为__declspec(dllimport);
__declspec和dllexport、dllimport为C++保留字段,用于区别此时程序是在生成动态库(dllexport)还是在被其他程序调用动态库(dllimport).
3.配置项目的输出为动态库
属性-》配置属性-》常规-》配置类型,选择动态库,类似静态库的设置,可以设置输出目录,输出文件名
4.设置动态库的.lib文件文件名(这里需要自己写出完整的文件名)
5.添加TEST_API_EXPORTS的定义:
6.规定需要输出到动态库中的变量、函数和类
在需要输出到动态库的地方添加头文件“test_exports.h”,具体的:
class TEST_EXPORTS MyClass{}; // 类TEST_EXPORTS int myVar; // 变量TEST_EXPORTS void myFun(){}// 函数示例:
头文件
#ifndef ADD_H#define ADD_H#include "test_exports.h"class TEST_EXPORTS CAdd {public:CAdd ();~CAdd();int add(int a, int b); int m_pData;};#endif源文件:
#include "test_add.h"CAdd::CAdd(){}CAdd::~CAdd(){}int CAdd::add(int a, int b){m_pData = a+b;return a+b;}
单独的源文件,以及用于函数声明的头文件:
“func.h”
extern int add_extern(int a,int b);
"func.cpp"
#include "test_exports.h"TEST_EXPORTS int add_extern(int a,int b){return a+b;}
点生成项目,在你的输出目录下将看到两个文件:
使用动态库:
头文件和lib文件的配置,与静态库一致;
在使用动态库的程序的.exe所在的目录下,添加.dll文件
注:输出到动态库的对象中,不能包含模板类,如 vector<int> m_array
0 0
- VS下生成与配置静态库与动态库(二)
- VS下生成与配置静态库与动态库(一)
- linux下生成动态库与静态库
- linux下生成动态库与静态库
- Linux下动态库、静态库的生成与使用
- 在window平台下生成动态库与静态库
- 在Ubuntu下生成动态库与静态库
- window平台下动态库与静态库生成与使用(C++)
- 关于使用VS生成Lua 5.2.3编译器与解释器 动态库 静态库
- 关于使用VS生成Lua 5.2.3编译器与解释器 动态库 静态库
- 生成与使用静态库/动态库
- Linux 静态链接库与动态链接库之二:动态链接库生成及使用
- Linux 静态链接库与动态链接库之二:动态链接库生成
- Linux 静态链接库与动态链接库之二:动态链接库生成
- gcc生成库文件(静态库与动态库)
- Linux下的动态链接库与静态链接库的生成与使用
- 学习笔记: linux下静态库与动态库的生成与调用
- linux下静态库与动态库的生成与调用
- 离散数学问题集(update)
- selenium webdriver之eclipse java开发环境搭建
- Vmware tools安装图解
- c++多态总结
- 利用Hudson实现自动化测试的分布式执行
- VS下生成与配置静态库与动态库(二)
- OC-SEL类型
- hdu 4135 Co-prime 容斥原理
- UNIX环境高级编程之第8章:进程控制
- URAL 1774 Barber of the Army of Mages 网络流
- Jsp语法、指令及动作元素
- 大牛isap模板
- OC-@property和@synthesize关键字
- 【php】自动加载类autoload psr-0与psr-4标准