准备 安装一个vs2019
官网 下载 地址
下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com)
链接:百度网盘 请输入提取码
提取码:uoqj
然后我们就开始
新建文件夹 右键 打开 vs
文件 新建 项目
找到 一个 dll 的项目
下一步 找 一个 自己 看这比较 舒服的 路径 和 名字 点击创建
完成 以后 就有这4个文件夹
找到 pch.cpp 写你要封装的函数 我写了2个 一个是 无参的 和有参的(不用修改任何东西直接写直接的函数就可以了)
// pch.cpp: 与预编译标头对应的源文件
#include "pch.h"
#include <iostream>
using namespace std;
// 当使用预编译的头时,需要使用此源文件,编译才能成功。
void hi() {
std::cout << "Hello! 大家好";
}
//下面是我配置过的pcl 大家可以注释掉
//如果你没有配置pcl 把下面的全部删掉就可以了
//主要 演示 有参的函数
#include <pcl/io/pcd_io.h>
void cl(const char dir[]) {
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile<pcl::PointXYZ>(dir, *cloud);
double distance = 0;
double shu = 0;
for (int nIndex = 1; nIndex < cloud->points.size(); nIndex++)
{
int indexZ = nIndex - 1;
shu = sqrt(abs(cloud->points[nIndex].x - cloud->points[indexZ].x) * abs(cloud->points[nIndex].x - cloud->points[indexZ].x) + abs(cloud->points[nIndex].y - cloud->points[indexZ].y) * abs(cloud->points[nIndex].y - cloud->points[indexZ].y));
distance += shu; indexZ++;
}
std::cout << "测量值为(m):" << distance << std::endl;
}
写完以后 要去pch.h 去声明 其他 不用改动
extern "C" __declspec(dllexport) void cl(const char dir[]);
注意 在 release x64 运行
出现这个
直接确定 不用管
进入 刚才 文件夹 在打开 vs2019 找 这个c++ 空项目
右键
把这2个 复制 到 第二次 新建的项目里面
右键 属性 release| x64
1和2 名字要一样
在 main.cpp 写入掉用dll代码
//修改后的代码
#pragma once
#pragma comment(lib,"js.lib")
#include <iostream>
using namespace std;
extern "C" __declspec(dllimport) void hi();
//如果没有配置删掉下面这行
extern "C" __declspec(dllimport) void cl(const char dir[]);
int main()
{
hi();
//如果没有配置删掉下面这行
cl("C:\\Users\\len\\Desktop\\9.pcd");
return 0;
}
注意细节
成功了 ,一定要 注意细心