我使用取自here的PTAM代码。我尝试使用此代码制作一个Android应用程序。
PTAM代码使用libcvd,TooN,gvars3库。我使用ndk-build
从我的c ++测试文件生成一个.so文件。
首先,我尝试在Android手机上运行以下代码:
#include <string.h>
#include <jni.h>
extern "C" {
int returnInt()
{
int returnVal = 4;
return returnVal;
}
}
它可以生成.so文件而不会出现任何错误。如果我添加#include < TooN/TooN.h >
,`ndk-build会说
fatal error: TooN/TooN.h: No such file or directory
#include <TooN/TooN.h>
^
compilation terminated.
Android.mk是:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := test-jni
LOCAL_SRC_FILES := test-jni.cpp
include $(BUILD_SHARED_LIBRARY)
如何解决此错误消息?
答案 0 :(得分:0)
致命错误:TooN / TooN.h:没有这样的文件或目录 #include&lt; TooN / TooN.h&gt;
当<>
与#include
一起使用时,编译器将在包含路径(以及可能的其他预定义目录)中搜索文件。
要在Android.mk
中构建模块时将目录添加到包含路径,您可以将其添加到LOCAL__INCLUDES
。例如,如果TooN.h
的完整路径为/home/foobar/TooN/TooN.h
,则应执行此操作:
LOCAL_C_INCLUDES += /home/foobar
我遇到致命错误:iostream:没有这样的文件或目录。在usr / include或usr / local / include下没有名为iostream的文件夹。
iostream
类是STL的一部分,因此您需要指定要构建的STL实现。这可以使用APP_STL
中的Application.mk
变量来完成。例如:
APP_STL := gnustl_shared
有关NDK可用的STL实现列表,请参阅this page。