2015-06-18

I am getting errors while compiling my native.cpp file in Eclipse ADT/NDK.

While compiling the following lines of code

FileStorage storage(nativepath, FileStorage::WRITE);
storage D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o:
> In function
> `Java_com_shahrukh_AugmentedReality_CAMShiftDetection_savemat(_JNIEnv*,
> _jobject*, long long, _jstring*)': D:\androidworkspace\Augmented-Reality/jni/native.cpp:14: undefined
> reference to `cv::FileStorage::FileStorage(std::string const&, int,
> std::string const&)'
> D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o:
> In function `operator D:/android-development/OpenCV-2.4.10-android-sdk/OpenCV-2.4.10-android-sdk/sdk/native/jni/include/opencv2/core/operations.hpp:2923:
> undefined reference to `cv::operator const&)'
> D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o:
> In function `operator':
> D:/android-development/OpenCV-2.4.10-android-sdk/OpenCV-2.4.10-android-sdk/sdk/native/jni/include/opencv2/core/operations.hpp:2914:
> undefined reference to `cv::write(cv::FileStorage&, std::string
> const&, cv::Mat const&)'
> D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o:
> In function
> `Java_com_shahrukh_AugmentedReality_CAMShiftDetection_savemat(_JNIEnv*,
> _jobject*, long long, _jstring*)': D:\androidworkspace\Augmented-Reality/jni/native.cpp:16: undefined
> reference to `cv::FileStorage::release()'
> D:\androidworkspace\Augmented-Reality/jni/native.cpp:18: undefined
> reference to `cv::FileStorage::~FileStorage()'
> D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o:
> In function `operator':
> D:/android-development/OpenCV-2.4.10-android-sdk/OpenCV-2.4.10-android-sdk/sdk/native/jni/include/opencv2/core/operations.hpp:2913:
> undefined reference to `cv::Exception::Exception(int, std::string
> const&, std::string const&, std::string const&, int)'
> D:/android-development/OpenCV-2.4.10-android-sdk/OpenCV-2.4.10-android-sdk/sdk/native/jni/include/opencv2/core/operations.hpp:2913:
> undefined reference to `cv::error(cv::Exception const&)'
> D:/android-development/OpenCV-2.4.10-android-sdk/OpenCV-2.4.10-android-sdk/sdk/native/jni/include/opencv2/core/operations.hpp:2913:
> undefined reference to `cv::Exception::~Exception()'
> D:/android-development/OpenCV-2.4.10-android-sdk/OpenCV-2.4.10-android-sdk/sdk/native/jni/include/opencv2/core/operations.hpp:2913:
> undefined reference to `cv::Exception::~Exception()'
> D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o:
> In function
> `Java_com_shahrukh_AugmentedReality_CAMShiftDetection_savemat(_JNIEnv*,
> _jobject*, long long, _jstring*)': D:\androidworkspace\Augmented-Reality/jni/native.cpp:18: undefined
> reference to `cv::FileStorage::~FileStorage()' collect2.exe: error: ld
> returned 1 exit status make.exe: ***
> [D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/libndksetup.so]
> Error 1

This is my `native.cpp` file

#include

#include

#include

#include

#include

using namespace cv;

JNIEXPORT void Java_com_shahrukh_AugmentedReality_CAMShiftDetection_savemat(JNIEnv *env, jobject obj,jlong addrmat, jstring path)
{
const char *nativepath = env->GetStringUTFChars(path, 0);
Mat& mat = *(Mat*)addrmat;

FileStorage storage(nativepath, FileStorage::WRITE);
storage ReleaseStringUTFChars(path, nativepath);
}

This is my `Android.mk` File

LOCAL_PATH := $(call my-dir)

export OPENCV_PACKAGE_DIR = D:/android-development/OpenCV-2.4.10-android-sdk/OpenCV-2.4.10-android-sdk/sdk/native/jni

include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES:=off
include $(OPENCV_PACKAGE_DIR)/OpenCV.mk

LOCAL_LDLIBS := -llog -ldl

LOCAL_MODULE := ndksetup
LOCAL_SRC_FILES := native.cpp

include $(BUILD_SHARED_LIBRARY)

This is my `Application.mk`

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := all

Show more