首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JNI中cv::FileStorage的错误

JNI中cv::FileStorage的错误
EN

Stack Overflow用户
提问于 2015-06-18 15:36:54
回答 1查看 658关注 0票数 0

我在Eclipse /NDK中编译native.cpp文件时出错。

在编译下列代码行时

代码语言:javascript
复制
FileStorage storage(nativepath, FileStorage::WRITE);
storage << "img" << mat;
storage.release();

错误是

函数D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o: In 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&)‘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&,函数中的D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/objs/ndksetup/native.o:::string&)函数中的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 to(cv::FileStorage&,std::string &,简历::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 tocv::FileStorage::Java_com_shahrukh_AugmentedReality_CAMShiftDetection_savemat(_JNIEnv*, _jobject*, long long, _jstring*)': D:\androidworkspace\Augmented-Reality/jni/native.cpp:16: undefined reference to()’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::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 const&)‘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(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::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()’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()‘收藏品2.exe:错误: ld返回一个退出状态make.exe:* D:/androidworkspace/Augmented-Reality//obj/local/arm64-v8a/libndksetup.so错误1

这是我的native.cpp文件

代码语言:javascript
复制
#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文件

代码语言:javascript
复制
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

代码语言:javascript
复制
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := all
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-21 13:00:29

经过大量的调试,我发现这个错误很小。

错误在行中

代码语言:javascript
复制
LOCAL_LDLIBS := -llog -ldl

这条线应该是

代码语言:javascript
复制
LOCAL_LDLIBS += -llog -ldl
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30919837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档