cpp 编译dll_PCL 1.11.1 Visual studio 2019 CUDA编译

全网最新最简单的vs2019 cuda编译操作指南(笑

我的配置:

Cuda 11.0

Visual studio 2019 community

PCL 1.11.1

flann 1.9.1

需要严格按照这个配置来,因为CUDA windows上面的有BUG,CUDA10.1 和10.2均无法完美编译

同时这个编译不带VTK的(我不用显示)

首先编译flann

b869e18e7e5fe3961b1314b9d1e4f975.png

可以不选cuda

编译生成flann_s_cpp.lib

过后下载PCL all in one( 利用里面的eigen和boost,有需要的话vtk也可以用)

需要手动配置一下boost,flann和eigen, boost添加进环境变量,flann和eigen配置好路径

2f3061883a570887216ce856b2821649.png

35e37706806302eef82e3ce89195851b.png

大概长这样

然后准备配置CUDA,勾选CUDA和GPU,选择一下架构,我的卡是10系列的,所以只选6.0 6.1

20a67950cd53695ec81bcd334838d8b6.png

cd4c9240617e2f58097f2ed6ac86516f.png

然后生成即可

最后编译的时候,eigen的half.h会出错

EIGEN_STRONG_INLINE __device__ half operator + (const half& a, const half& b) {
  return __hadd(a, b);
}

需要改成:

EIGEN_STRONG_INLINE __device__ half operator + (const half& a, const half& b) {
 #if defined(EIGEN_CUDACC_VER) && EIGEN_CUDACC_VER >= 90000
   return __hadd(::__half(a), ::__half(b));
 #else
   return __hadd(a, b);
 #endif
 }

编译即完成了,编译出的dll如下

OpenNI2.dll
OpenNI2.jni.dll
pcl_common.dll
pcl_commond.dll
pcl_cuda_features.dll
pcl_cuda_featuresd.dll
pcl_cuda_sample_consensus.dll
pcl_cuda_sample_consensusd.dll
pcl_cuda_segmentation.dll
pcl_cuda_segmentationd.dll
pcl_features.dll
pcl_featuresd.dll
pcl_filters.dll
pcl_filtersd.dll
pcl_gpu_containers.dll
pcl_gpu_containersd.dll
pcl_gpu_features.dll
pcl_gpu_featuresd.dll
pcl_gpu_octree.dll
pcl_gpu_octreed.dll
pcl_gpu_segmentation.dll
pcl_gpu_segmentationd.dll
pcl_gpu_utils.dll
pcl_gpu_utilsd.dll
pcl_io.dll
pcl_iod.dll
pcl_io_ply.dll
pcl_io_plyd.dll
pcl_kdtree.dll
pcl_kdtreed.dll
pcl_keypoints.dll
pcl_keypointsd.dll
pcl_ml.dll
pcl_mld.dll
pcl_octree.dll
pcl_octreed.dll
pcl_peopled.dll
pcl_recognition.dll
pcl_recognitiond.dll
pcl_registration.dll
pcl_registrationd.dll
pcl_sample_consensus.dll
pcl_sample_consensusd.dll
pcl_search.dll
pcl_searchd.dll
pcl_segmentation.dll
pcl_segmentationd.dll
pcl_stereo.dll
pcl_stereod.dll
pcl_surface.dll
pcl_surfaced.dll
pcl_tracking.dll
pcl_trackingd.dll
一、简介   AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。 二、使用   1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。   2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。   3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。   4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。 三、备注   1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。   2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。   3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。   4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值