0

Eclipse ADT/NDK で native.cpp ファイルをコンパイル中にエラーが発生しました。

次のコード行をコンパイルしている間

FileStorage storage(nativepath, FileStorage::WRITE);
storage << "img" << mat;
storage.release();

エラーは

D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o: 関数内 Java_com_shahrukh_AugmentedReality_CAMShiftDetection_savemat(_JNIEnv*, _jobject*, long long, _jstring*)': D:\androidworkspace\Augmented-Reality/jni/native.cpp:14: undefined reference tocv::FileStorage::FileStorage(std::string const&, int, std::string const&) ' D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o: 関数内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 tocv::operator<<(cv::FileStorage&, std::string const&)' D: /androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o: 関数内operator<< <cv::Mat>': 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 tocv::write(cv::FileStorage&, std::string const&, cv::Mat const&)' D :/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o: 関数内 Java_com_shahrukh_AugmentedReality_CAMShiftDetection_savemat(_JNIEnv*, _jobject*, long long, _jstring*)': D:\androidworkspace\Augmented-Reality/jni/native.cpp:16: undefined reference tocv::FileStorage::release()' D:\androidworkspace\Augmented-Reality/jni/native. cpp:18: 未定義の参照cv::FileStorage::~FileStorage()' D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o: In functionoperator<< ': D:/android-development/OpenCV-2.4.10-android-sdk/OpenCV-2.4.10-android-sdk/sdk/native/jni/include/opencv2/core/operations.hpp:2913: 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 tocv::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: 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 tocv::Exception::~Exception() への未定義の参照' D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o:関数 Java_com_shahrukh_AugmentedReality_CAMShiftDetection_savemat(_JNIEnv*, _jobject*, long long, _jstring*)': D:\androidworkspace\Augmented-Reality/jni/native.cpp:18: undefined reference tocv::FileStorage::~FileStorage()' collect2.exe: エラー: ld が 1 終了ステータスを返しました make.exe: *** [D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/ libndksetup.so] エラー 1

これは私のnative.cppファイルです

#include <jni.h>
#include <stdio.h>
#include <string.h>
#include <android/log.h>
#include <opencv2/core/core.hpp>

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 << "img" << mat;
    storage.release();

    env->ReleaseStringUTFChars(path, nativepath);
}

これは私のAndroid.mkファイルです

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)  

これは私のApplication.mk

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

1 に答える 1

0

多くのデバッグの後、エラーが非常に小さいことがわかりました

エラーは行にありました

LOCAL_LDLIBS := -llog -ldl

行は

LOCAL_LDLIBS += -llog -ldl
于 2015-06-21T13:00:29.330 に答える