"Not declared in this scope" error in Android JNI C++

Jack

I have this JNI code that uses C++.

#include <eigenfaces_jni.h>
#include <opencv2/core/core.hpp>
#include <opencv2/contrib/contrib.hpp>
#include <opencv2/highgui/highgui.hpp>

#include <string>
#include <vector>
#include <iostream>
#include <fstream>
#include <sstream>


using namespace std;
using namespace cv;


JNIEXPORT jstring JNICALL Java_com_example_facedetector_FaceTracker_nativeCreateObject
  (JNIEnv *env, jclass, jstring JFileDir){
// These vectors hold the images and corresponding labels.
    vector<Mat> images;


const char *str = env->GetStringUTFChars(jFileDir, NULL);

const char *buf;

/*Releasing the Java String once you have got the C string
      is very important!!!*/

      env->ReleaseStringUTFChars(jFileDir, str);
            Mat im = imread(jFileDir);

            if (im.empty())
                {
                    cout << "Cannot load image!" << endl;
                    buf = "Can load image";
                }
            else{
                buf = "Cannot load image";
            }
            return env->NewStringUTF("Hello");

}

However, there is always an error at

const char *str = env->GetStringUTFChars(jFileDir, NULL);

which states that

 - Symbol 'jFileDir' could not be resolved
- 'jFileDir' was not declared in this scope
- Invalid arguments ' Candidates are: const char * GetStringUTFChars(_jstring *, unsigned 
 char *) '

Tried the solution in this link Type 'std::string' could not be resolved. Still not working. Any help to solve this problem would be appreciated. Thank you.

Mike Seymour

You've declared a function parameter called JFileDir, but nothing called jFileDir. C++ is case-sensitive.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related