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

C++ 创建动态库及两种方法调用动态库

文章目录

    • 创建动态库
        • ..h文件
        • .cpp文件
    • 调用动态库
      • 1、采用pragma comment(lib,"***.lib")方式
      • 1、不用pragma comment

创建动态库

测试环境为VS2019 , 创建一个空项目,在项目上右键,进入属性,常规,配置类型改为动态库DLL
在这里插入图片描述

…h文件
// MyLibrary.h
#pragma once#ifdef MYLIBRARY_EXPORTS
#define MYLIBRARY_API __declspec(dllexport)
#else
#define MYLIBRARY_API __declspec(dllimport)
#endifextern "C" MYLIBRARY_API int add(int p_ia , int p_ib);
// 字符串处理函数
extern "C" MYLIBRARY_API void reverse_string(char* str);
.cpp文件
#include<iostream>
#include"add.h"using namespace std;int add(int p_ia, int p_ib)
{return p_ia + p_ib;
}// 字符串处理函数
void reverse_string(char* str) 
{int len = 0;while (str[len] != '\0') len++;for (int i = 0; i < len / 2; i++) {char temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}
}

到此动态库创建完成

调用动态库

1、采用pragma comment(lib,“***.lib”)方式

1、将头文件,.dll .lib 拷贝到当前文件夹下,其他什么依赖项,库目录都不需要配置,这种方法简单直接


#include<iostream>
#include"../Project1/add.h"
#pragma comment(lib , "Project1.lib")
using namespace std;int main()
{int ret = add(100,2090);cout << ret << endl;cout << "1111111" << endl;char s[] = "123456";reverse_string(s);cout << s << endl;return 0;
}

在这里插入图片描述

1、不用pragma comment

1、库目录添加,动态库的路径
在这里插入图片描述
2、链接器,输入,添加动态库的.lib文件
在这里插入图片描述
在这里插入图片描述


#include<iostream>
#include"../Project1/add.h"
//#pragma comment(lib , "Project1.lib")
using namespace std;int main()
{int ret = add(100,2090);cout << ret << endl;cout << "1111111" << endl;char s[] = "123456";reverse_string(s);cout << s << endl;return 0;
}
http://www.dtcms.com/a/264668.html

相关文章:

  • DINO 浅析
  • 医学+AI教育实践!南医大探索数据挖掘人才培养,清华指导发布AI教育白皮书
  • HarmonyOS应用开发高级认证知识点梳理 (四)状态管理V2应用级状态
  • AutoGen-AgentChat-1-整体了解
  • NestJS 系列教程(一):认识 NestJS 与项目初始化
  • RabbitMQ 高级特性之持久性
  • OpenCV仿射变换详解
  • 【飞算JavaAI】智能开发助手赋能Java领域,飞算JavaAI全方位解析
  • 红海云签约东莞科创金融集团,科创金融行业人力资源数字化
  • 论文阅读笔记——VGGT: Visual Geometry Grounded Transformer
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ButtonRippleEffect(按钮涟漪效果)
  • 基于[coze][dify]搭建一个智能体工作流,使用第三方插件抓取热门视频数据,自动存入在线表格
  • Node.js-http模块
  • mac Maven配置报错The JAVA_HOME environment variable is not defined correctly的解决方法
  • 21、企业行政办公(OA)数字化转型:系统如何重塑企业高效运营新范式
  • Android Native 之 inputflinger进程分析
  • 硬件选型与组网规划S7-300以太网模块适配性与网络架构搭建
  • 学习笔记(27):线性回归基础与实战:从原理到应用的简易入门
  • 利器:NPM和YARN及其他
  • 楚存科技SD NAND贴片式T卡—高性能存储解决方案、赋能AI智能硬件
  • 《Jaccard距离》算法:集合差异性度量的核心工具
  • 第三章 计算机网络体系结构
  • 【前端】基础 - HTML基础标签和样式设置
  • 深入理解装饰器模式:动态扩展对象功能的灵活设计模式
  • 前端Base64格式文件上传详解:原理、实现与最佳实践
  • STM32 使用 TinyUSB
  • 03-Linux内核驱动模块加载
  • visual studio Code运行vue项目
  • 4K超高清无缝切换与画面分割矩阵
  • gin框架 中间件 是在判断路由存在前执行还是存在后执行的研究