打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VS下生成与配置静态库与动态库(二)
userphoto

2017.09.24

关注

前面一篇介绍了VS下静态库的编译和使用,这一篇将介绍动态库的生成和使用方法。

生成动态库:

1.新建一个Win32控制台项目,去掉预编译文件头,工程命名为“test”;

2.添加用于构建动态库的代码段,放在“test_exports.h”中

  1. #pragma once;  
  2. #ifndef TEST_EXPORTS_H_  
  3. #define TEST_EXPORTS_H_  
  4.   
  5. #ifdef TEST_API_EXPORTS  
  6. #define TEST_EXPORTS __declspec(dllexport)  
  7. #else  
  8. #define TEST_EXPORTS __declspec(dllimport)  
  9. #endif  
  1. #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”,具体的:

  1. class TEST_EXPORTS MyClass  
  2. {  
  3. }; // 类  
  4. TEST_EXPORTS int myVar; // 变量  
  5. TEST_EXPORTS void myFun(){}// 函数   
示例:

头文件

  1. #ifndef ADD_H  
  2. #define ADD_H  
  3. #include "test_exports.h"  
  4.   
  5. class TEST_EXPORTS CAdd   
  6. {  
  7. public:  
  8.     CAdd ();  
  9.     ~CAdd();  
  10.     int add(int a, int b);  
  11.     int m_pData;  
  12. };  
  13.   
  14. #endif  
源文件:

  1. #include "test_add.h"  
  2.   
  3. CAdd::CAdd()  
  4. {  
  5.   
  6. }  
  7.   
  8. CAdd::~CAdd()  
  9. {  
  10.   
  11. }  
  12.   
  13. int CAdd::add(int a, int b)  
  14. {  
  15.     m_pData = a+b;  
  16.     return a+b;  
  17. }  

单独的源文件,以及用于函数声明的头文件:

“func.h”

  1. extern int add_extern(int a,int b);  

"func.cpp"

  1. #include "test_exports.h"  
  2. TEST_EXPORTS int add_extern(int a,int b)  
  3. {  
  4.     return a+b;  
  5. }  

点生成项目,在你的输出目录下将看到两个文件:



使用动态库:

头文件和lib文件的配置,与静态库一致;

在使用动态库的程序的.exe所在的目录下,添加.dll文件


注:输出到动态库的对象中,不能包含模板类,如 vector<int> m_array

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C 静态库(lib)及动态库(dll)的创建及调用
Windows下静态库、动态库的创建和调用过程
declspec(dllexport)和declspec(dllimport) 的使用说明
VC++6.0生成动态库并使用
C调用C++库和C++调用C库的方法
c++静态库和动态库的使用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服