1、引言

CloudCompare作为一款强大的点云与网格处理系统,提供了很多插件功能。

2、问题

在CMake时勾选了很多插件功能,但是生成后的Plugins是灰色无法使用的。

3、思考

这个问题也是CloudCompare机制的亮点之一。在此引用某大佬的话:“1)cmake只是生成可以供各种ide编译的工程文件 并不是生成插件dll; 2)生成了插件dll 要查看输出目录是否正确 vs的工程默认输出的插件dll exe是找不到的 要放到同一目录下 把dll放到plugins目录下 这个目录是exe默认搜索dll的位置。”

4、发现

(1)首先查看CloudCompare安装目录下有plugins文件夹,里面存在很多插件功能的dll;

(2)然后查看源码mainwindow.cpp中的函数:ccPluginInterface* MainWindow::getValidPlugin(QObject* plugin)、
void MainWindow::loadPlugins()、bool MainWindow::dispatchPlugin(QObject *plugin)。

其中很重要的是一句话:m_pluginsPath = QCoreApplication::applicationDirPath()+QString("/plugins");

也就是说需要读取CloudCompare生成目录下的plugins目录里面的dll,获取插件功能。

//部分代码已删除
void MainWindow::loadPlugins()
{menuPlugins->setEnabled(false);menuShadersAndFilters->setEnabled(false);toolBarPluginTools->setVisible(false);toolBarGLFilters->setVisible(false);//"static" pluginsforeach (QObject *plugin, QPluginLoader::staticInstances())dispatchPlugin(plugin);ccConsole::Print(QString("Application path: ")+QCoreApplication::applicationDirPath());//plugins are in bin/pluginsm_pluginsPath = QCoreApplication::applicationDirPath()+QString("/plugins");ccConsole::Print(QString("Plugins lookup dir.: %1").arg(m_pluginsPath));QStringList filters;filters << "*.dll";QDir pluginsDir(m_pluginsPath);pluginsDir.setNameFilters(filters);foreach (QString filename, pluginsDir.entryList(filters)){QPluginLoader loader(pluginsDir.absoluteFilePath(filename));QObject* plugin = loader.instance();if (plugin){ccConsole::Print(QString("Found new plugin: '%1'").arg(filename));if (dispatchPlugin(plugin)){m_pluginFileNames += filename;}else{delete plugin;plugin = 0;ccConsole::Warning("\tUnsupported or invalid plugin type");}}else{delete plugin;plugin = 0;ccConsole::Warning(QString("[Plugin] %1")/*.arg(pluginsDir.absoluteFilePath(filename))*/.arg(loader.errorString()));}}
}

5、解决

以qRANSAC_SD为例

在CloudCompare的build位置\qCC\Release目录下新建文件夹plugins

将CC的build位置\plugins\qRANSAC_SD\Release\QRANSAC_SD_PLUGIN.dll

复制到CC的build位置\qCC\Release\plugins目录下

CloudCompare:Plugins插件功能的调用相关推荐

  1. php打印模板插件,smarty的插件功能是smarty模板的精华

    一,smarty插件介绍 smarty的插件放在/smarty/libs/plugins下面,它为程序的开发提供了很大的方便,例如:{$yesterday|date_format:"%H:% ...

  2. gulp plugins 插件介绍

    原文:http://ju.outofmemory.cn/entry/103253 鸟窝 2014-11-28 3020 阅读 gulp Gulp是一个构建工具, 功能类似grunt, 以及Java生态 ...

  3. mysql plugin 调用_MySQL插件接口的调用方式

    author:sufei 版本:8.0.16 一.简介 首先简单说明一下插件的实现原理 在程序的合适位置(挂钩处)安插相应的函数指针,相应的结构类似:if (fun_ptr != null) fun_ ...

  4. embedv.php_PHP与视频播放插件功能实现,非常简单

    PHP与视频播放插件功能实现,非常简单 龙行    PHP    2018-8-28    2579    0评论 最近在研究maccms所以会接触到这个ckplayer播放器,那么如何 php与视频 ...

  5. html中表单的校验的插件,功能强大的jquery.validate表单验证插件

    本文实例为大家分享了jquery.validate表单验证的使用方法,供大家参考,具体内容如下 1 .表单验证的准备工作 在开启长篇大论之前,首先将表单验证的效果展示给大家. 1.点击表单项,显示帮助 ...

  6. go 查找模块位置_如何使用Go语言插件功能?

    背景 在我做 C 语言开发的时候,为了让程序有更好的扩展性,通常选择将需要扩展的功能实现为插件,通过加载 so 文件的方式导入插件中的函数.当我学 Golang 的时候,很希望能有这样的插件功能.终于 ...

  7. 「初探」小程序插件功能

    「初探」小程序插件功能 3月13日,小程序发布了新功能-- 小程序插件.即,在小程序基础库 1.9.6 版本上,允许开发者开发插件,同时将插件提供给其它小程序使用.微信小程序在构建自己生态的征程上,又 ...

  8. IntelliJ IDEA Plugins 插件整理

    IntelliJ IDEA Plugins 插件整理 插件库位置 查看类 jclasslib Bytecode viewer `查看字节码` 创建类 GsonFormat `通过JSON生成实体类` ...

  9. 【Nvidia DeepStream5.0】Gst-nvtracker插件功能说明

    Gst-nvtracker Gst-nvtracker插件允许DeepStream 管道使用一个底层跟踪器来跟踪具有唯一ID的检测目标.它支持任何实现NvDsTracker API的底层库,包括三个参 ...

最新文章

  1. mysql 5.8 新特性_MySQL 5.4的新特性解析
  2. Java中获取数据库中两个时间的相差秒数
  3. 巨型机是一种什么的超级计算机,这个世界其实是一个超级计算机
  4. 模糊搜索怎么实现_干货 | 你真的了解自己是怎么搜索的吗_01
  5. 计算机房的英语用谐音怎么读,“人机对话”学英语 发音不准就过不了电脑关...
  6. elementui的css文件没有引入_Python中引入模块详细介绍,使用模块的过程中注意事项教程...
  7. 畅销书主编推出 MATLAB 春季班,限量优惠+送百G资料!
  8. oracle 序列验证脚本,oracle 生成序列脚本
  9. 大数据之-Hadoop3.x_Yarn_公平调度器---大数据之hadoop3.x工作笔记0146
  10. CSS基础——盒子模型【学习笔记】
  11. 九、面向对象三大特征(三)—— 多态
  12. 51单片机4位抢答器_倒计时可调仿真设计
  13. ubuntu硬盘序列号怎么查询_Ubuntu系统下查看硬盘信息
  14. 工作那些事(十)谈谈技术主管(总监)
  15. 挑筋(挑治)疗法——针挑治疗痔疮
  16. Pytorch实战__反向攻击(Adversarial Attack)
  17. 数字媒体技术作业题代码:matlab将三个灰度图片转化成一个彩色图片
  18. ros --- 录制imu bag包 和 imu标定
  19. 山这边,山那边[泥巴网]
  20. shell中awk,find,grep学习

热门文章

  1. Ocelot的使用(负载均衡实现)
  2. 利用出厂状态下的闲置主机配置HP M1136打印机
  3. location对象的方法
  4. 北大数学系韦东奕爆红!那清华教授授课,你听不听?
  5. 【STK】STK11.6下载安装+MATLAB互连+各插件模块(不用再找了,这里能解决)
  6. Powershell快速生成指定尺寸的Kindle屏保图
  7. Android 天气APP(二十八)地图搜索定位
  8. 大数据学习的必备五大核心技术
  9. 可信区块链推进计划互操作项目组成立,微众银行担任副组长单位
  10. 美发管理系统:初学者入门级C++