当前位置: 首页 > news >正文

国际设计师网站无锡网站建设培训班

国际设计师网站,无锡网站建设培训班,建筑公司企业愿景及理念模板,wordpress转发可见目录 静态库 编写静态库 使用静态库 方案一 方案二 动态库 编写动态库 使用动态库 方案一 方案二 方案三 总结 静态库 静态库是在编译时将库的代码合并到最终可执行程序中的库。静态库的优势是在编译时将所有代码包含在程序中,可以使程序独立运行&…

目录

静态库

编写静态库

使用静态库

方案一

方案二

动态库

编写动态库

使用动态库

方案一

方案二

方案三

总结


静态库

静态库是在编译时将库的代码合并到最终可执行程序中的库。静态库的优势是在编译时将所有代码包含在程序中,可以使程序独立运行,但增加了可执行文件的大小。

静态库需要.lib文件和一个.h文件,程序正常使用.h的函数,在链接选项里加入.lib文件或者#pragma comment手动加载

编写静态库

创建空项目,添加文件,右击项目属性修改生成目标为lib库

//print.h

#pragma once
#include <iostream>

void print();

//print.cpp

#include "print.h"

void print()
{
    std::cout << "静态库测试" << std::endl;
}

使用静态库

lib需要.h文件和.lib文件,如果没有把这两个文件复制到对应项目文件夹中的话就需要配置包含目录和库目录。

方案一

通过配置项目属性的方式进行添加到指定项目中去使用。

  • 包含目录 .h文件目录

  • 库目录 .lib文件目录

  • 链接输入增加lib

#include <iostream>
#include "print.h"  //切记需要包含头文件

int main()
{
    print();

    return 0;
}

方案二

通过#pragma直接导入lib文件的方式,但使用这种方式如果lib文件较多的话就会显得代码冗长。

#include <iostream>
#include "print.h"  //切记需要包含头文件
#pragma comment(lib,"./print_func.lib")
int main()
{
    print();

    return 0;
}

动态库

动态库是在运行时加载到内存中的库。它们可以被多个程序共享,减少了每个程序的内存占用和代码重复。动态库的优势是可在运行时更新库,但需要确保正确的库版本和依赖关系。

编写动态库

创建空项目,添加文件,右击项目属性修改生成目标为dll库,操作方式和lib库方式相同。但编写dll函数需要_declspec(dllexport)特殊声明。

在 Windows 系统上,当你将一个函数或符号定义为 __declspec(dllexport) 时,这意味着该函数或符号将被标记为可从动态链接库(DLL)中导出。这使得其他程序或模块能够通过使用 __declspec(dllimport) 来引用该函数或符号。需要注意的是,__declspec(dllexport) 是特定于 Microsoft Visual C++ 编译器的语法扩展。在其他平台和编译器上,通常使用不同的导出和导入方式。因此,如果你的代码需要在跨平台环境下移植或兼容其他编译器,建议查阅相关文档或使用更通用的跨平台导出方式,如使用预处理器宏或导出表等。

//Add.h

#pragma once
#include <iostream>

_declspec(dllexport) int add(int a, int b);

//Add.cpp

#include "Add.h"

int add(int a, int b)
{
    return a + b;
}

使用动态库

dll需要.h文件、.lib文件以及.dll文件,如果没有把这三个文件复制到对应项目文件夹中的话就需要配置包含目录和库目录。

方案一

将.h文件、.lib文件以及.dll文件置入工程所在目录,然后添加对应的.h头文件,类似配置第三方库的方式使用。

#include <iostream>
#include "Add.h"
#pragma comment(lib,"add_func.lib")

int main()
{
    std::cout << "sum:" << add(1, 2) << std::endl;
    return 0;
}

方案二

WIN32 API函数LoadLibrary、GetProcAddress装载,使用这种载入方法,不需要.lib文件和.h头文件,只需要.dll文件即可(将.dll文件置入工程目录中)

#include <iostream>
#include <windows.h>
typedef int(*DLLFunc)(int,int);
int main()
{
    DLLFunc func;
    HINSTANCE lib = LoadLibrary(L"add_func.dll");
    if (lib == nullptr)
    {
        FreeLibrary(lib);
        return 0;
    }
    func = (DLLFunc)GetProcAddress(lib, "add");
    if (func == nullptr)
    {
        FreeLibrary(nullptr);
        return 0;
    }
    std::cout<<func(1,2)<<std::endl;
    return 0;
}

方案三

配置包含目录和库目录,把dll文件放到.exe文件所在目录下,点击exe就可运行。

总结

本篇文章主要介绍了如何封装和调用动态库和静态库,静态库是在链接时使用的,动态库是在运行时使用的,dll相比于lib来说多了一个.dll文件,调用静态库和动态库最简单的方法就是把对应文件放到文件目录中,在调用时include头文件,使用#pragma comment(lib,.lib文件名),便可。若文件较多,为避免代码冗长,则可配置包含目录、库目录以及附加依赖项,从而可以直接使用。

http://www.yayakq.cn/news/6812/

相关文章:

  • 做网站 提要求上海网站备案核验点
  • h5可以来做网站吗网域名查询地址
  • 没有网站想做个链接页面怎么做php的网站怎么做
  • 做简易网站吉林省住房城乡建设厅网站首页
  • 网站导航优化的描述贵州百度推广优化报告
  • 沈阳定制网站制作北京网站推广公司排名
  • 上海商场网站开发装修设计公司取名
  • 福州网站设计十年乐云seo百度关键词排名
  • 淄博手机网站开发公司在线学习建设网站
  • 智慧团建网站pc端在哪个网站做一照一码
  • 江门网站定制多少钱网站模板套用湖南岚鸿
  • 防止服务器上的网站被进攻站长工具收录查询
  • 淄博网站seo价格邢台信息港首页
  • 苏州住房与城乡建设网站网站推广塔山双喜
  • 聊城网站建设信息提高seo排名
  • 网站备案单位的联系方式做网站卖流量
  • 广州化妆品网站建设公司做任务 网站
  • 一个网站做数据分析要多少钱龙岩网红景点
  • 有情怀的网站设计呼伦贝尔建设工程检测网站
  • 行业网站建设教程佛山seo外包平台
  • 哪些网站可以做图片链接invoker wordpress
  • 徐州建站公司模板凡科网小程序
  • 商城购物网站设计内容Gzip 网站 能够压缩图片吗
  • 上海好的网站设计公司网站备案时间
  • 宁波建设网站制作小程序制作公司选卓越华网天下
  • 流量查询中国移动官方网站不会写代码如何做网站
  • 一学一做教育视频网站网站制作者
  • 沈阳酒店团购网站制作邢台市桥西住房建设局网站
  • 网站开发补充合同国内大的做网站的公司
  • 网站建设开发方式网站建设图片如何优化