VS下生成与配置动态库
学习来自:https://blog.csdn.net/luyan_abaci/article/details/48037843
生成动态库:
新建一个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
如果定义了宏 TEST_API_EXPORTS,则将TEST_EXPORTS定义为__declspec(dllexport);
否则,将TEST_EXPORTS定义为__declspec(dllimport);
__declspec和dllexport、dllimport为C++保留字段,用于区别此时程序是在生成动态库(dllexport)还是在被其他程序调用动态库(dllimport).
配置项目的输出为动态库
设置动态库的.lib文件文件名(这里需要自己写出完整的文件名)
添加TEST_API_EXPORTS的定义:
规定需要输出到动态库中的变量、函数和类
test_add.h
#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
test_add.cpp
#include "test_add.h" CAdd::CAdd() { m_pData = 0; } CAdd::~CAdd() { } int CAdd::add(int a, int b) { m_pData = a + b; return a + b; }
点生成项目,在你的输出目录下将看到两个文件:
使用动态库.......
前面三步骤和配置静态库的一样
1.属性 配置属性 C/C++ 常规 附加包含目录.h
2.属性 配置属性 链接器 常规 附加库目录.lib
3.属性 配置属性 链接器 输入 附加依赖项 里面要写一个sub.lib
4.把生成的dll放到exe所在的目录下
新建一个控制台项目
代码!
#include <iostream> #include "test_add.h" int main() { CAdd num; std::cout << num.add(5, 10) << "\n"; std::cout << "Hello World!\n"; }
学习完啦!再总结总结 开始干!