vs2019从一个含main函数的cpp文件到生成动态生成库

小白,只会写简单的cpp文件,算法写完之后需要项目工程化,和上位机开发人员完成交接,记录一下。

文章目录

  • 一、VS创建空项目
  • 二、编写代码


一、VS创建空项目

在这里插入图片描述
在这里插入图片描述
点击下一步,
我这里创建的项目名称为LidarCoreDetection
位置D:\VisualStudio\vsProject
解决方案名称:LidarCoreDetection
在这里插入图片描述
在这里插入图片描述
创建源文件名为LidarCoreDetection.cpp
同理,在头文件中创建LidarCoreDetection.h文件
建议.cpp和.h文件同名

二、编写代码

在创建的LidarCoreDetection.h中编写代码

#ifndef LIDARCOREDETECTION_H
#define LIDARCOREDETECTION_H

//定义导出的函数,这里是最重要的,名字自己取
#ifdef LIDARDLL_EXPORTS
#define LIDARDLL_API __declspec(dllexport)
#else
#define LIDARDLL_API __declspec(dllimport)
#endif

#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <vector>
#include <Eigen/Dense>

// 导出函数声明
LIDARDLL_API void exportFunction();

//项目中的声明函数放这里
bool isCoilUnwinding(const pcl::PointCloud<pcl::PointXYZ>::Ptr& inputPointCloud);

bool isNearLine(const pcl::PointXYZ& point, double slope, double intercept, double threshold);

void removeSteelAxisPoints(pcl::PointCloud<pcl::PointXYZ>::Ptr& inputPointCloud, pcl::PointCloud<pcl::PointXYZ>::Ptr& outputPointCloud, double slope, double intercept, double threshold);

void filterCloudByCondition(pcl::PointCloud<pcl::PointXYZ>::Ptr& cloud, pcl::PointCloud<pcl::PointXYZ>::Ptr& conditionCloud, double GTY, double LTY, double GTX, double LTX);

void filterCloudByRadius(pcl::PointCloud<pcl::PointXYZ>::Ptr& cloud, pcl::PointCloud<pcl::PointXYZ>::Ptr& radiusCloud, double searchRadius, int minNeighbors);

double distanceToPointLine(const pcl::PointXYZ& point, double a, double b);

pcl::PointXYZ findIntersection(float m1, float b1, float m2, float b2);

Eigen::VectorXd fitPolynomial(const std::vector<pcl::PointXYZ>& points, int degree);

#endif // LIDARCOREDETECTION_H

在创建的LidarCoreDetection.cpp中编写代码,注意必须引用LidarCoreDetection.h

#include "LidarCoreDetection.h"

int main() {
	exportFunction(); // 调用导出的函数
	return 0;
}

编写函数的cpp:源文件创建.cpp文件,名称为函数名称
在这里插入图片描述
这里创建isNearLine.cpp

#include "LidarCoreDetection.h"

// 定义一个函数来检查点是否靠近给定的直线
bool isNearLine(const pcl::PointXYZ& point, double slope, double intercept, double threshold) {
    // 计算点到直线的距离
    double distance = std::abs(point.y - (slope * point.x + intercept)) / std::sqrt(slope * slope + 1);
    return distance <= threshold;
}

同理,创建其他所有函数的cpp文件
在这里插入图片描述
至此代码部分完成,剩下就是配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
预处理器需要添加:

LIDARDLL_EXPORTS

这个就是你刚刚定义的导出函数,添加了宏定义

然后
在这里插入图片描述
生成如下文件
在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AdaptIoT——制造业中使用因果关系的自我标签系统

0.概述 论文地址&#xff1a;https://arxiv.org/abs/2404.05976 在许多制造应用中&#xff0c;机器学习&#xff08;ML&#xff09;已被证明可以提高生产率。针对制造业应用提出了一些软件和工业物联网&#xff08;IIoT&#xff09;系统&#xff0c;以接收这些 ML 应用。最近&…

FastAPI 第六课 -- 请求和响应

目录 一. 前言 二. 请求数据 2.1. 查询参数 2.2. 路径参数 2.3. 请求体 三. 响应数据 3.1. 返回 JSON 数据 3.2. 返回 Pydantic 模型 3.3. 请求头和 Cookie 四. 重定向和状态码 五. 自定义响应头 一. 前言 在 FastAPI 中&#xff0c;请求&#xff08;Request&#…

每日论文7-17MWCL基于IMOS的小vco增益变化的VCO

《Small VCO-Gain Variation Adding a Bias-Shifted Inversion-Mode MOS Varactor》17MWCL 对于PLL来说&#xff0c;其中VCO的调谐增益KVCO越线性&#xff0c;其变化程度ΔKvco越小&#xff0c;对PLL的稳定有较大的好处。这篇文章给了一个很简单朴素而有效的补偿var非线性的方…

nuclei配合burpsuite快速生成POC

nuclei配合burpsuite快速生成POC 简介 Nuclei是一款基于YAML语法模板的开发的定制化快速漏洞扫描器。它使用Go语言开发&#xff0c;具有很强的可配置性、可扩展性和易用性 官网&#xff1a;https://nuclei.projectdiscovery.io Nuclei项目地址&#xff1a;https://github.com/…

2024热门AIPPT工具大盘点

随着人工智能技术的飞速发展&#xff0c;一种全新的 PPT 制作方式应运而生——Ai 制作 PPT。它如同一位智能助手&#xff0c;为我们带来了高效、创新且个性化的 PPT 制作体验。今天我们一起探讨有哪些工具可以助力我们轻松打造出令人惊艳的演示文稿的。 1.笔灵AIPPT 链接一下…

从零开始手写STL库:Stack

从零开始手写STL库–Stack的实现 Gihub链接&#xff1a;miniSTL 文章目录 从零开始手写STL库–Stack的实现一、stack是什么&#xff1f;二、stack要包含什么函数总结 一、stack是什么&#xff1f; 栈是一种后进先出&#xff08;LIFO&#xff0c;Last In First Out&#xff09…

【STM32】江科大STM32笔记汇总(已完结)

STM32江科大笔记汇总 STM32学习笔记课程简介(01)STM32简介(02)软件安装(03)新建工程(04)GPIO输出(05)LED闪烁& LED流水灯& 蜂鸣器(06)GPIO输入(07)按键控制LED 光敏传感器控制蜂鸣器(08)OLED调试工具(09)OLED显示屏(10)EXTI外部中断(11)对射式红外传感器计次 旋转编码器…

大功率蓝外光激光模组能使用多长时间?

在高科技迅猛发展的今天&#xff0c;大功率蓝外光激光模组作为精密光学技术的重要成果&#xff0c;广泛应用于科研探索、工业加工及安防监控等多个领域。其强大的光束能量与独特的波长特性&#xff0c;为各行各业带来了前所未有的效率提升与创新可能。然而&#xff0c;对于这一…

物理学基础精解【40】

文章目录 矢量积矢量积&#xff08;又称叉积、外积&#xff09;的几何意义一、面积表示二、垂直性三、方向性四、应用实例五、数学表达 矢量积&#xff08;叉积&#xff09;的坐标表示法矢量积的坐标表示法的几何意义矢量积的性质矢量积的应用 矢量积&#xff08;又称叉积、外积…

【frp】frp重启、frp启动、frp后台启动、frps dashboard等等

我写的关于frp配置的文章&#xff1a;frp配置 服务端frps 1. 创建服务文件 sudo nano /etc/systemd/system/frps.service2. 添加服务配置 在打开的文件中添加以下内容&#xff1a; [Unit] DescriptionFRPS Server Afternetwork.target[Service] Typesimple ExecStart/root…

力扣高频 SQL 50 题(基础版)|分析、题解

注意一些语法 1、group by出现在having前面&#xff0c;但是having中所使用的聚合必须是select中的 2、date类型之间的比较&#xff1a;datediff&#xff08;&#xff09; 差的绝对值 or 用字符框起来比较边界 3、算日期长度需要相减之后加一 4、round(, n)n默认是0&#x…

0基础跟德姆(dom)一起学AI 机器学习01-机器学习概述

【知道】人工智能 - Artificial Intelligence 人工智能 - AI is the field that studies the synthesis and analysis of computational agents that act intelligently - AI is to use computers to analog and instead of human brain - 释义 - 仿智&#xff1b; 像人…

在线翻译器工具横评:性能、准确率大比拼

无论是旅行者在异国他乡探寻风土人情&#xff0c;学者研究国外的前沿学术成果&#xff0c;还是商务人士与国际伙伴洽谈合作&#xff0c;都离不开一种高效、准确的语言沟通工具。而翻译器在线翻译能很好的帮我们解决这个问题。今天我们一起来探讨有那些好用的翻译工具。 1.福昕…

玄机--蚁剑流量

木马的连接密码是多少 黑客执行的第一个命令是什么 id 黑客读取了哪个文件的内容&#xff0c;提交文件绝对路径 /etc/passwd 黑客上传了什么文件到服务器&#xff0c;提交文件名 黑客上传的文件内容是什么 黑客下载了哪个文件&#xff0c;提交文件绝对路径 蚁剑流量特征总结 …

单调递增/递减栈

单调栈 单调栈分为单调递增栈和单调递减栈 单调递增栈&#xff1a;栈中元素从栈底到栈顶是递增的 单调递减栈&#xff1a;栈中元素从栈底到栈顶是递减的 应用&#xff1a;求解下一个大于x元素或者是小于x的元素的位置 给一个数组&#xff0c;返回一个大小相同的数组&#x…

4. 数据结构: 对象和数组

数字、布尔值和字符串是构建数据结构的原子。不过&#xff0c;许多类型的信息需要不止一个原子。对象允许我们对值&#xff08;包括其他对象&#xff09;进行分组&#xff0c;从而构建更复杂的结构。到目前为止&#xff0c;我们所构建的程序都受到限制&#xff0c;因为它们只能…

maven安装教程(图文结合,最简洁易懂)

前提 所有的Maven都需要Java环境&#xff0c;所以首先需要安装JDK,本教程默认已安装JDK1.8 未安装JDK可看JDK安装教程&#xff1a;JDK1.8安装教程 主要分为两个大步骤&#xff1a;安装、配置 一、下载和安装Maven 1、将maven解压后的文件夹复制到D盘根目录 &#xff08;最好…

努比亚 Z17 NX563J Root 教程三方REC刷写工具教程

教程&#xff1a;1&#xff0c;自用成功 正常链接列表 adb devices 检查fastboot链接列表 fastboot devices 解锁设备fastboot oem nubia_unlock NUBIA_NX563J 我用的解锁设备是&#xff1a;fastboot flashing unlock 1.打开开发者选项。将OEM解锁的按钮打开 2.下载附件努…

苹果更新过时产品:三款 Mac 成“古董”,九款 Mac 彻底“停产”

9 月 24 日消息苹果今天更新了“过时产品”名单&#xff0c;新增加了三款 Mac 型号&#xff0c;并将另外九款 Mac 型号从“过时产品”归为“停产产品”。 新入列的 Mac 过时产品&#xff1a; MacBook Air&#xff08;视网膜显示屏&#xff0c;13 英寸&#xff0c;2018 年&…