Windows-C++ 二次开发实现
当您成功安装 RVS 时,Windows 版本的二次开发案例代码已存放在 RobotVisionSuite\rvs_sdk\RvsPluginNodeExample 中。
Windows 二次开发代码案例与 Linux-C++ 中案例类似,如注册算子端口、定义算子属性等,请参考 Linux-C++ 二次开发实现。
本章节将详细介绍 Windows 中如何进行编译,与如何在 RVS 软件中使用二次开发算子。
rvs 加载自定义算子由 rvsPluginFactory (算子包,一个dll文件)实现算子注册,在启动时加载该包中的所有算子。 此工程中的算子包文件为 “NodeExampleLib.cpp/.h” ,用于管理或注册该包中的所有算子。 算子包名为项目名(rvs_plugin_nodeExample),该名称决定了算子包的名称。
算子为继承于 rvs::Node 的 class ,通过覆写其中的 Process() 函数实现自定义功能。
此工程中包含算子文件如下 (.cpp/.h)
-
“HelloRvsPluginNode”
-
“EmitPosePluginNode”
-
“LineDetectorPluginNode”
-
“LoadImagePluginNode”
-
“LoadPointCloudPluginNode”
-
“VoxelGridPluginNode”
此工程加载开发环境的方式为 视图->其他窗口->属性管理器->右击 Release|x64-> 添加现有属性表->手动找到安装目录
/rvs_sdk 里面的 rvsPluginNode.props
。
代码解析
参照案例代码中HelloRvsPluginNode.cpp/.h
文件,新建一个类,类名尾缀
PluginNode
,继承
rvs::Node,实现实例化和 Process() 函数。
本案例作用为简单日志输出,若想要深入学习,请参考 Linux-C++ 二次开发实现中函数接口介绍、代码解析。
HelloRvsPluginNode.h
#pragma once
#include "rvs_plugin/Node.h"
class HelloRvsPluginNode : public rvs::Node
{
public:
HelloRvsPluginNode();
protected:
virtual int Process() override;
};
HelloRvsPluginNode.h
#include "HelloRvsPluginNode.h"
#include "rvs_plugin/rvsLoggingCN.h"
HelloRvsPluginNode::HelloRvsPluginNode()
: rvs::Node("HelloRvs")
{
}
int HelloRvsPluginNode::Process()
{
RVS_PLUGIN_NODE_LOG(info,
"Hello,RVS","你好,RVS");
return 1;
}
在算子包文件中(NodeExampleLib.cpp)注册二次开发的算子。
编译
注意
此项目为 VS2019(vc142)项目包。如果您想在其他更高版本的 VS 中(例如 2022(vc143))使用,请在 VisualStudioInstaller 中安装 VC142 编译环境。然后,选择项目(不是解决方案)右键属性->常规->平台工具集-> vc142,或者将该项目重定向到 vc143。
如下图所示:
编辑步骤:
在解决方案资源管理器中右击rvs_plugin_nodeExample
工程,选择生成
。
预期结果:
生成文件 rvs_plugin_nodeExample.dll
,文件位置在该解决方案目录下的
rvsPluginNodeExample\x64\Release 文件夹中。
生成失败:
假如报错 找不到 rvs_xxx.h
,检查模式为
release 64 并且属性表已经加载,属性表中的目录有效,指通过环境变量 $(RVS_ROOT) 找到 rvs_sdk 目录。
假如报错 attribute
之类的,见解决方案/工程的新建和移植。
使用二次开发算子
找到生成的 dll 文件,拷贝到 RVS 安装目录里的 RvsResources\lib 目录下。 启动或重新启动 RVS,即可在算子列表找到该算子库。
解决方案/工程的新建和移植
新建 c++ 工程,选择控制台应用
项目模板。
对于工程名,应使用前缀“rvs_plugin_”,如果没有添加该前缀,可以通过重命名进行修改。
点击创建
。
创建完成后,需要进行项目配置。
-
右击项目名-> 属性->常规->配置类型->动态库(.dll)
-
右击项目名->属性->c/c++ ->预处理器->预处理器定义 添加以下内容:
RVS_WINDOWS_VERSION BOOST_ALL_DYN_LINK \_CRT_SECURE_NO_WARNINGS
-
加载开发环境:。
-
视图->其他窗口->属性管理器。
-
右击 Release|x64->添加现有属性表。
-
手动找到RVS安装目录/rvs_sdk里面的”rvsPluginNode.props”,点击
打开
。
-
参照NodeExampleLib.cpp/.h
文件编写算子包文件。
参照HelloRvs.cpp/.h
文件编写算子文件
参照本手册编译运行。