【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

PTAM的笔记(二)---ptam移植到android平台

原创 2016年08月31日 12:33:22

需要项目源码的---->项目工程完整文件

PTAM在windows linux平台的编译还可以去参照官方手册:http://www.robots.ox.ac.uk/~bob/software/ptamm/manual.pdf。PTAM官网只有C++源代码,因此移植到android考虑采用jni接口,github上有类似的工程android-ptam-master。本文主要讲下载了这个工程后的调试问题。

    首先,不建议android开发环境搭建在winows平台,本人,8G内存,i5中等处理器,在windows平台的eclipse上调试这个工程,每次编译2小时+。。。。后来只好搬到fedora上了。在windows平台上还有个问题:
1.windows的命令行只接收最大8191个字符,所以可能会报错,
    解决方法是:打开相应的android.mk文件,加上一句:  LOCAL_SHORT_COMMANDS := true,说明:设置这个变量为‘true’,当你的module有很多的源文件,或者依赖很多的静态或动态库。这会强制编译系统使用一个中间的列表文件,并通过@$(listfile) 语法和library archiver 或者 static linker一起使用。注意如果设置了‘true’以外的值,都会恢复成默认行为。你也可以在Android.mk文件中定义APP_SHORT_COMMANDS来强制使你的工程中的所有modules使用这项功能。
    注意:默认我们不推荐启用这个功能,因为它会使得编译变慢。APP_SHORT_COMMANDS , LOCAL_SHORT_COMMANDS 可以解决链接时参数太长的问题(生成*.a *.so时中间文件过多) 然而,编译,生成 libcrypto.so时,在libcrypto模块中采用LOCAL_SHORT_COMMANDS:=true来指定会导致编译错误。在Application.mk中指定 APP_SHORT_COMMANDS:=true可以顺利编译,链接。
2.出现f2c.h里链接到源文件报错,比如../INCLUDE/f2c.h,导致下面的integer等等变量都无法识别
     下载android-ptam后,在eclipse import之,然后设置项目属性,添加NDK路径,在C++-build里添加environment NDKROOT,以及在build command里添加正确的路径。出现这个问题的原因没搞清楚,解决方法是直接去INCLUDE里找到f2c.h的内容,然后复制到出错的f2c.h中来。或者删掉出错的f2c.h,把正确的f2c.h链接到此处。
3.出现在同一个namespace下debug_initialize无法识别。
    也是很奇葩的错误,有时莫名的自己好,实在不行,可以把debug_initialize的声明文件debug里面所有内容copy到出错的文件中,这样它在同一个文件中调用,就不会错了。
4.出现include <cmath.h> unresolved,造成下面swap函数无法识别。
    这个问题的原因也是不太清楚,我用的NDK版本是r10b,我把NDK版本换成r9d,然后重新设置环境,就好了。可能是版本问题,也可能只是因为我换了NDK重新加载了一次,刷新了,解决了错误。
5.编译通过(大概需要三/五分钟),运行PTAM APP 结果,有按钮界面,无相机预览。
    在captureView里面把关于render的两行注释取消掉。再到BatchRenderer里把onDrawFrame里的注释取消掉。保存运行。
6.mutiple target错误,import之后就出现
    这种错误应该是有target不匹配造成的,在属性 android里,project build target下的框里勾选合适的target。我用的是19. 
如果,你运行app直接秒退,检查是否编译了JNI库(在lib下),没有则是你ndk-build没有设置好。ndk-build 设置关键在于,要是build command里能找到正确的路径,我的是 ${NDKROOT}ndk-build ,                      NDKROOT=/home/cian/下载/android-ndk-r9d/。

    就这些了,望后来者好运。

    最后附上我的项目工程完整文件:http://download.csdn.net/detail/qq_21158525/9620430

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

OpenCV学习笔记(四)—— OpenCV for Android移植到Android平台

如今,大部分的AR都是基于移动设备的,所以这里我们尝试在Android中调用OpenCV的功能来做一些相关的测试。由于OpenCV是基于C语言和部分C++语言开发的,而Android开发使用的则是Ja...

cocos2d-x入门(7)-win7下把win32游戏移植到Android平台(无需cygwin和minigw)

接下来需要把win32上测试成功的demo移植到android上运行。首先需要下载最新ndk和eclipse,因为本项目完全使用NDK自带的编译器,没有用到cygwin ,所以需要<span class="last" style="
  • mmdev
  • mmdev
  • 2012-10-27 11:45
  • 517

J2ME游戏只移植到Android平台(二)

 让我继续解析 Graphics类 import lxs.slg.Game; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Paint.Align; import android.graphics.Paint.Style; import

Android平台移植ffmpeg的一些笔记

是在http://blog.csdn.net/moruite/archive/2011/04/06/6305944.aspx基础上做的编译移植过程,主要做一些记录。首先:是要编译libjnivideo...

三国杀 JAVA源码(可移植Android平台)

JAVA源码网盘下载:<a style=""

PTAM移植到IOS(附工程和库文件)

移植结果可用SpaceBar和Reset,没有ARDriver和MapViewer功能。完整xcode工程和用到的库文件(包含include、lib,以及gvars3、libcvd的源代码和工程)下载...

在Linux下使用NDK把libcurl移植到android平台的过程

    OS版本:Centos 6.2    NDK版本:android-ndk-r8d-linux-x86     libcurl版本:curl-7.29.0     在这里没有使用make-standalone-toolchain

将EasyRTMP_RTSP移植到Android平台实现的RTSP拉流转推RTMP直播流功能

本文转自EasyDarwin开源团队成员Kim的博客:http://blog.csdn.net/jinlong0603/article/details/73253044前言安防互联网化的需求已经越来越...

在ubuntu系统下cocos2dx移植到android平台

1.序 在网络上搜索cocos2dx移植到android的文章有很多, 本文也是参考根据网络上的文章移植成功的, 下面将本人的移植过程以及移植过程中遇到的问题记录下来以供今后参考和即将移植的新人一个参考: 网络上有很多文章都在window平台下移植的。 本人第一次在window上移植的, 安装完cygwin后, 编译cocos2dx的create_android_project.sh提示make guu什么没安装完整, 整了半天没整好。后来改用在ubuntu上移植, 发

FFmpeg 2.8.4 移植到android平台(二)

上一篇移植过程太过复杂,又发现了一种简单的方法。 移植前准备:见http://blog.csdn.net/niuzhucedenglu/article/details/50524266 前三部。 移植...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)