杂
目录
库一般分为两种:静态库(.a 、.lib)动态库(.so 、.dll )所谓静态、动态是指链接过程。
动态链接的基本思想:把程序按照模块拆分成各个相对独立的部分,在程序运行时才将它们链接在一起形成一个完整的程序,而不同于静态链接把所有的程序模块都链接成一个单独的可执行文件。本篇介绍win下动态库的生成和使用。
我们统一Debug模式下的x64,
创建主工程:
1.新建 >> win32 >> 空项目即可,eg:MainPro工程
创建动态库工程:
1.添加 >> win32 >> 应用程序类型选择DLL,并附加选项空项目,eg:HelpPro工程
2.HelpPro工程中添加c++类,并使用DLL导出的符号,__declspec(dllexport)
#pragma once
class __declspec(dllexport) HelpDll
{
public:
HelpDll();
~HelpDll();
};
extern "C" __declspec(dllexport) void cFunction(float value);
#include "HelpDll.h"
#include <iostream>
HelpDll::HelpDll()
{
std::cout << "new helpdll" << std::endl;
}
HelpDll::~HelpDll()
{
std::cout << "del helpdll" << std::endl;
}
void cFunction(float value)
{
std::cout << "cFun arg " << value << std::endl;
}
3.生成即可
4.检测,在......\solution\x64\Debug下,Help.lib,Help.dll......,这样我们的动态库生成完成。
主工程使用动态库
1.属性配置,包含目录,库目录,库
2.使用
#include "../Help/HelpDll.h"
int main()
{
HelpDll dll;
cFunction(0.23f);
while (true) {
}
return 0;
}
3.编译,测试ok
通过上述操作,基本可以实现动态库的生成和使用。实际中由于没有统一平台模式,出现其他错误,因此再次提醒2点,1:统一Debug模式下的x64,2:属性配置3点