SashulinMessageBroker:在消息流中调用C++ DLL

一、背景

在现实应用中,算法、核心逻辑为了追求快速高效的运行速度,很多人都采用C++来编写,并打包成动态库供外部使用。SMB针对这种应用场景,提供了DLL组件,实现在消息流中对DLL的动态调用。下实例讲解如何实现DLL as Service。

二、创建例子

1、使用vs2022创建C++ DLL工程

创建过程略过。主要展示.h和.cpp文件中的代码。本例中命令为SashulinDLL.h和SashulinDLL.cpp

SashulinDLL.h中的定义:

包含了add和getValue两个导出函数:

SashulinDLL.cpp中的函数实现:

非常简单的两个导出函数,编译后生成SashulinDLL.dll文件。

注意:DLL编译框架必须与JDK一样,本案例都是64位。

2、使用SMB创建消息流

以下是消息流全貌,只关注两个DLL流即可。

第一个名为DLL1组件,它的重要属性是:

filePath:E:/Sashulin/DLL/SashulinDLL/x64/Debug/SashulinDLL.dll

methodName:add   //这里必须与函数名称一致

parameterNames:a,b //这里必须与函数入参名一致

paramTypes:int,int   //两个入参数的类型

returnType:int     //DLL函数的返回类型

对应的HttpUrlPattern组件的属性:

urlpattern: v1/dll

params:a,b  //这里必须与函数入参名一致

第二个名为DLL2组件,属性如下:

filePath:E:/Sashulin/DLL/SashulinDLL/x64/Debug/SashulinDLL.dll

methodName:getValue   //这里必须与函数名称一致

parameterNames:value //这里必须与函数入参名一致

paramTypes:String  //两个入参数的类型

returnType:String     //DLL函数的返回类型

对应的HttpUrlPattern组件的属性:

urlpattern: v1/dll_str

params:value  //这里必须与函数入参名一致

三、运行效果

使用get调用api,传入a和b两个参数,由DLL运行后返回。

调用DLL2流的返回结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/16649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多旋翼+发电机:国债应急系留照明无人机技术详解

多旋翼发电机技术的应急系留照明无人机是一种集成了先进飞行技术、发电技术和照明技术的无人机系统。这种无人机具有高度的灵活性、移动性和适应性,能够在各种复杂环境下迅速部署,为夜间搜救、救援等应急任务提供高效、可靠的照明支持。 无人机参数&…

融汇11款AI工具构建完美应用

本文将为您介绍25个开源项目,分为上下两篇以便您融汇它们来制作自己的AI应用。人工智能(AI)应用在近年来得到了长足的发展。从语音助手到软件开发,人工智能已在我们的生活中无处不在,并得到了广泛应用。 如您所见&…

构建智慧城市公共服务系统的功能架构设计

随着城市化进程的加速,城市公共服务系统在保障居民生活品质、提升城市管理水平方面扮演着愈发重要的角色。构建智慧城市公共服务系统的功能架构设计至关重要,它不仅需要充分考虑居民需求与城市管理的实际情况,还需要整合先进的科技手段&#…

LINGO:存贮问题

存贮模型中的基本概念 模型: 基本要素: (1)需求率:单位时间内对某种物品的需求量,用D表示。 (2)订货批量:一次订货中,包含某种货物的数量,用 Q表…

【C语言】实现贪吃蛇--项目实践(超详细)

前言: 贪吃蛇游戏大家都玩过吧?这次我们要用C语言来亲手制作一个!这个项目不仅能让我们复习C语言的知识,还能了解游戏是怎么一步步做出来的。我们会一起完成蛇的移动、食物的生成,还有碰撞检测等有趣的部分。准备好了…

新计划,不断变更!做自己,接受不美好!猪肝移植——早读(逆天打工人爬取热门微信文章解读)

时间不等人 引言Python 代码第一篇 做自己,没有很好也没关系第二篇结尾 引言 新计划: 早上一次性发几个视频不现实 所以更改一下 待后面有比较稳定的框架再优化 每天早上更新 早到8点 晚到10点 你刚刚好上班或者上课 然后偷瞄的看两眼 学习一下 补充知…

SSM流浪宠物领养系统 毕业设计-附源码 270917

摘 要 流浪宠物一直是影响城市环境与居民生活的一个不可忽略的因素。基于此,本文设计并实现一个流浪宠物领养系统。用户可以通过本系统查看搜索流浪宠物的相关信息、进行领养申请,为其提供爱心帮助。本系统有效地解决了流浪宠物领养工作开展困难等问题&a…

STM32F1之OV7725摄像头·SCCB总线详解(附带源码编写)

STM32F1之OV7725摄像头-CSDN博客 STM32F1之OV7725摄像头像素数据输出时序、FIFO 读写时序以及摄像头的驱动原理详解-CSDN博客 目录 1. 硬件设计 1.1 SCCB 控制相关 1.2 VGA 时序相关 1.3 FIFO 相关 1.4 XCLK 信号 2. 代码设计 2.1 SCCB总线软件实现 2.1.1 宏定…

上位机图像处理和嵌入式模块部署(f103 mcu运行freertos)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 mcu一般有两个用途,一个是控制,一个是非控制。控制类的应用一般要求实时性比较高,什么时候做什么,都是有严格的时间要求的。而非控制类的应用,则要求实现尽可能多的功能,比如…

spring boot整合j2cache 配置项目全局键标识 帮助定位是哪个项目产生的缓存

我们利用 j2cache 存进 redis的缓存 key 可以加个全局标识 这样 到时看缓存 方便别人看是哪个项目存进去的 例如 这里 我们存入的 book 我们 keys * 查看 就知道是个book 但不知道具体来自那套系统 我们在 j2cache.properties 中加上 redis.namespace 项目全局键标识 我们…

42-5 应急响应之日志分析

一、Windows 系统日志排查 1)日志概述 在 Windows 2000 专业版、Windows XP 和 Windows Server 2003 中: 系统日志的位置为 C:\WINDOWS\System32\config\SysEvent.evt安全性日志的位置为 C:\WINDOWS\System32\config\SecEvent.evt应用程序日志的位置为 C:\WINNT\System32\c…

【漏洞复现】海康威视综合安防管理平台 iSecure Center applyCT fastjson 远程代码执行

0x01 漏洞名称 海康威视综合安防管理平台 iSecure Center applyCT fastjson 远程代码执行 0x02 漏洞影响 0x03 搜索引擎 app"HIKVISION-综合安防管理平台"0x04 漏洞详情 POST /bic/ssoService/v1/applyCT HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Wi…

NASA数据集——阿尔法喷气式大气实验二氧化碳和甲烷数据

Alpha Jet Atmospheric eXperiment Carbon Dioxide and Methane Data 阿尔法喷气式大气实验二氧化碳和甲烷数据 简介 Alpha Jet Atmospheric eXperiment (AJAX) 是美国国家航空航天局艾姆斯研究中心与 H211, L.L.C. 公司的合作项目,旨在促进对加利福尼亚、内华达…

vue+iview tabs context-menu 弹出框怎么修改样式

今天遇到一个需求说页面顶部的菜单右键弹出框离得有点远 代码是这样 <Tabs type"card" closable class"main-tags-col-tabs" v-model"activeTab" on-click"handleClickTag" :before-remove"handleBeforeRemove" capt…

什么是容器:从基础到进阶的全面介绍

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

【Linux 网络】网络基础(三)(网络层协议:IP 协议)

在复杂的网络环境中确定一个合适的路径。 一、TCP 与 IP 的关系 IP 层的核心作用是定位主机&#xff0c;具有将数据从主机 A 发送到主机 B 的能力&#xff0c;但是能力并不能保证一定能够做到&#xff0c;所以这时就需要 TCP 起作用了&#xff0c;TCP 可以通过超时重传、拥塞控…

【必备工具】gitee上传-保姆级教程

目录 1.gitee是什么 2.gitee怎么注册 ​编辑 3.gitee怎么提交代码 4.gitee的三板斧 Clone仓库 Q&A 1. Gitee 只有三板斧吗&#xff1f; 2. Git 教了&#xff0c;Gitee 上没有绿点怎么办&#xff1f; 3. 用户名和密码输入错误怎么办&#xff1f; 4. 操作时不小心…

【c++基础】和谐分组

题目描述 s 班共有 n 名学生&#xff0c;按照学号从 1 到的顺序每名学生的身高分别为 a[1],a[2]...a[n]。由于是新学期&#xff0c;s 班需要进行分组&#xff0c;分组的要求如下&#xff1a; 进行分组的组数不能超过 k。 每组的人的学号必须相邻。 由于身高差过大的人分在同一…

wordpress主题给网站增加一个版权声明区块代码分享

在数字化时代&#xff0c;网络上的信息传播变得越来越便捷&#xff0c;给人们生活和工作带来了极大的便利。然而&#xff0c;在这个过程中也产生了很多版权问题。为了更好地保护自己的版权&#xff0c;许多网站开始在其网页上添加版权声明。本文将探讨在网站上添加版权声明的重…

机器人运动轨迹学习——GMM/GMR算法

机器人运动轨迹学习——GMM/GMR算法 前置知识 GMM的英文全称为&#xff1a;Gaussian mixture model&#xff0c;即高斯混合模型&#xff0c;也就是说&#xff0c;它是由多个高斯模型进行混合的结果&#xff1a;当然&#xff0c;这里的混合是带有权重概念的。 一维高斯分布 GMM中…