接着上一篇《MRPT在VS2013中的配置》,下面接收如何使用编译好的MRPT建立工程项目。

  

  一、设置环境变量

  上一篇中,配置MRPT时,使用到了几个相关库,opencv、zlib、wxWidgets、ffmpeg。

  设置环境变量,添加路径PATH:

    D:\opencv\build\x86\vc12\bin;D:\ffmpeg-r16537-gpl-lshared-win32\bin;D:\MRPT\buildVS2013\bin\Debug;D:\wxWidgets-3.1.0\lib\vc_dll;D:\zlib-1.2.8\win32\Debug;

  如果需要编译Release版本,则需另外添加:

    D:\MRPT\buildVS2013\bin\Release;D:\zlib-1.2.8\win32\Release;

  添加这些路径,主要是把项目可能用到的DLL文件加载到PATH路径中。

  

  二、VS2013项目设置

  1、先将D:\Program Files\mrpt-1.4.0\include\mrpt\mrpt-config\mrpt目录下的config.h和version.h复制到D:\Program Files\mrpt-1.4.0\include\mrpt目录下。

  2、打开VS2013,建立mrptTest项目:

    新建项目——C++——设置文件名mrptTest——WIN32控制台应用程序

  3、打开工程属性——VC++目录——包含目录 :

    添加目录D:\Program Files\mrpt-1.4.0\include 和 D:\Program Files\mrpt-1.4.0\libs\XXXX\include

    第二个包含选项众多,我是将所有libs目录下所有的mrpt文件夹复制到D:\MRPT\buildVS2013\include,然后再添加该目录。

    需要用wxWidgets,则添加D:\wxWidgets-3.1.0\include

    

  4、打开工程属性——VC++ 目录——库目录:

    在配置Debug中添加目录  D:\MRPT\buildVS2013\lib\Debug

    在配置Release中添加目录  D:\MRPT\buildVS2013\lib\Release

  三、编写代码

  这里采用MRPT的例子,参考 https://raw.githubusercontent.com/MRPT/mrpt/master/doc/mrpt_example1/test.cpp

 // mrptTest.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <mrpt/poses/CPoint3D.h>
#include <mrpt/poses/CPose2D.h>
#include <mrpt/poses/CPose3D.h>
#include <mrpt/utils/CTicTac.h> using namespace mrpt::utils;
using namespace mrpt::poses;
using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
try
{
// The landmark (global) position: 3D (x,y,z)
CPoint3D L(, , ); // Robot pose: 2D (x,y,phi)
CPose2D R(, , DEG2RAD(45.0f)); // Camera pose relative to the robot: 6D (x,y,z,yaw,pitch,roll).
CPose3D C(0.5f, 0.5f, 1.5f, DEG2RAD(-90.0f), DEG2RAD(), DEG2RAD(-90.0f)); // TEST 1. Relative position L' of the landmark wrt the camera
// --------------------------------------------------------------
cout << "L: " << L << endl;
cout << "R: " << R << endl;
cout << "C: " << C << endl;
cout << "R+C:" << (R + C) << endl;
//cout << (R+C).getHomogeneousMatrix(); CPoint3D L2;
CTicTac tictac;
tictac.Tic();
size_t i, N = ;
for (i = ; i<N; i++)
L2 = L - (R + C);
cout << "Computation in: " << 1e6 * tictac.Tac() / ((double)N) << " us" << endl; cout << "L': " << L2 << endl; // TEST 2. Reconstruct the landmark position:
// --------------------------------------------------------------
CPoint3D L3 = R + C + L2;
cout << "R(+)C(+)L' = " << L3 << endl;
cout << "Should be equal to L = " << L << endl; // TEST 3. Distance from the camera to the landmark
// --------------------------------------------------------------
cout << "|(R(+)C)-L|= " << (R + C).distanceTo(L) << endl;
cout << "|L-(R(+)C)|= " << (R + C).distanceTo(L) << endl; return ;
}
catch (exception &e)
{
cerr << "EXCEPCTION: " << e.what() << endl;
return -;
}
catch (...)
{
cerr << "Untyped excepcion!!";
return -;
}
}

  运行后的结果如下:

  

  至此,官网例子测试通过,才算开始MRPT项目路程了。

  (欢迎转载,转载请注明出处。)

MRPT笔记——使用编译好的MRPT库建立VS2013项目的更多相关文章

  1. [RK3399][Android7.1] 调试笔记 --- 模块编译32位动态库【转】

    本文转载自:http://blog.csdn.net/kris_fei/article/details/78923784 Platform: RK3399 OS: Android 7.1 Board: ...

  2. libzip开发笔记(二):libzip库介绍、ubuntu平台编译和工程模板

    前言   Qt使用一些压缩解压功能,选择libzip库,libzip库比较原始,也是很多其他库的基础支撑库,编译过了windows版本,有需求编译一个ubuntu版本的,交叉编译需求的同样可参照本文章 ...

  3. zlib开发笔记(四):zlib库介绍、编译windows vs2015x64版本和工程模板

    前言   Qt使用一些压缩解压功能,介绍过libzip库编译,本篇说明zlib库.需要用到zlib的msvc2015x64版本,编译一下.   版本编译引导 zlib在windows上的mingw32 ...

  4. 高级C/C++编译技术之读书笔记(三)之动态库设计

    最近有幸阅读了<高级C/C++编译技术>深受启发,该书深入浅出地讲解了构建过程(编译.链接)中的各种细节,从多个角度展示了程序与库文件或代码的集成方法,提出了面向代码复用和系统集成的软件架 ...

  5. zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译

    前言   方便做嵌入式arm的交叉移植zlib库.   Zlib库   zlib被设计为一个免费的,通用的,法律上不受限制的-即不受任何专利保护的无损数据压缩库,几乎可以在任何计算机硬件和操作系统上使 ...

  6. 使用VS2010编译64的Geos库

    Geos库在cmake中总是报错,所以我决定试试nmake编译64位的库.现将编译过程记录如下: 1.下载Geos,我下的是最新版3.5.0,地址在 http://trac.osgeo.org/geo ...

  7. Android APP使用NDK编译后的ffmpeg库出现undefined reference to 'posix_memalign'错误

    在android程序中使用NDK编译后的ffmpeg库的时候出现了如下错误: jni/libs/libavutil.a(mem.o): in function av_malloc:libavutil/ ...

  8. DuiLib学习笔记1——编译运行demo

    c++中皮肤问题比较麻烦,MFC自带的太难用.DirectUI界面库就比较强大了,之前像skin++之类的基于DirectUI收费昂贵.DuiLib是基于DirectUI的界面库,可以将用户界面和处理 ...

  9. VS2010编译链接openssl静态库

    最近工作需要使用一些加密算法.之前尝试过cryptopp以及polarssl,听说openssl中的加密模块特别全,并且特别好用.于是想尝试一下. 一.环境配置 下载openssl,我这里使用的是op ...

随机推荐

  1. SQL2008 的 日期数据类型

    摘要 你是否曾经想在数据库中存储一个日期而没有时间部分,或者想存储一个时间值希望有更高的精度?在SQL Server 2008的介绍中,微软介绍了一些新的日期数据类允许你只存储一个日期.更高精度的时间 ...

  2. &和&&

    int j = 5,k = 3; if(!(j==k) && (j == 1 + k++ )) { } System.out.println(j); System.out.printl ...

  3. validate插件深入学习-02 常用方法和validate对象的方法

    ①检查表单元素是否有效 valid() 在表单内添加<button id="check">检查</button> $('#check').click(fun ...

  4. django例子,question_text为中文时候报错

    问题描述 UnicodeEncodeError at /admin/polls/question/3/ 'ascii' codec can't encode characters in positio ...

  5. java简单计算器

    写的一个小计算器,留着以后看吧. import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import ...

  6. php 判断当前的操作系统的方法

    因为windows 和 linux 下的标识符是不一样的,所以写了个方法来获取当前的标识符. /** * 对操作系统进行判断 * @return string */ static function j ...

  7. js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

    html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...

  8. 转:Java中abstract和interface的区别

    转自:Java中abstract和interface的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java ...

  9. 如何将本地文件上传到github托管

    Github开源代码库以及版本控制系统,可以托管各种git库,可以将个人Blog或小型项目托管到github,方便看起来又高大上的样子,哈哈哈,下面就看一下实践过程和成果吧!一:注册账号:地址: ([ ...

  10. Android异步任务机制之AsycTask

    在Android中实现异步任务机制有两种方式,Handler和AsyncTask. 本篇就说说AsyncTask的异步实现. 1.什么时候使用 AsnyncTask 在上一篇文章已经说了,主线程主要负 ...