जेएनआई रैपर अपरिभाषित संदर्भों के बारे में शिकायत करते हैं

Adrijan 07/27/2017. 0 answers, 39 views
android android c android-ndk android-ndk cmake jni

मैं एक एंड्रॉइड ऐप में टैगलिब लाइब्रेरी का उपयोग करने की कोशिश कर रहा हूं। जहां तक ​​मुझे पता है, मुझे इसके लिए एक जेएनआई रैपर लिखना है। मैं कुछ सरल कोशिश करना चाहता था - टैग से शीर्षक पढ़ें।

मैंने जावा में निम्न कोड लिखा है:

package developer.rogan.taglib;

import android.support.annotation.NonNull;
import android.util.Log;

public class TagJNI {

    private static final String TAG = "TagJNI";

    private String filename;
    private String title;

    public TagJNI(@NonNull String filename) {
        this.filename = filename;
    }

    public String getTitle() {
        Log.d(TAG, "getTitle, filename = " + filename);
        this.title = taglibGetTitle(filename);
        return title;
    }

    private native String taglibGetTitle(String filename);
} 

एंड्रॉइड स्टूडियो ने मुझे मूल कोड में स्वचालित रूप से फ़ंक्शन उत्पन्न करने का विकल्प दिया (फ़ाइल को tagjni.c कहा जाता है)। मैंने कार्यक्षमता जोड़ने के लिए अपना कुछ कोड जोड़ा:

#include #include "../../../../../../Development/C++/taglib-1.11.1/bindings/c/tag_c.h"

TagLib_File *file;
TagLib_Tag *tag;
char *title;

JNIEXPORT jstring JNICALL
Java_developer_rogan_taglib_TagJNI_taglibGetTitle(JNIEnv *env, jobject instance,
                                                  jstring filename_) {

    taglib_set_strings_unicode(JNI_FALSE);
    const char *filename = (*env)->GetStringUTFChars(env, filename_, 0);

    file = taglib_file_new(filename);
    tag = taglib_file_tag(file);
    title = taglib_tag_title(tag);
    taglib_file_free(file);
    (*env)->ReleaseStringUTFChars(env, filename_, filename);
    return (*env)->NewStringUTF(env, title);
} 

इसमें शामिल कथन के साथ कुछ भी चल रहा है। मैं #include कर सकता हूं और फिर दूसरे में शामिल है कि यह अप्रयुक्त है। हालांकि, जब मैं इसे हटा देता हूं, तो अब भी कोई भी चर नहीं पहचाना जाता है। जब मैं त्रुटियों पर होवर करता हूं, तो मुझे # शामिल करने का विकल्प मिलता है।

जब मैं ऐप चलाने की कोशिश करता हूं, तो मुझे निम्न त्रुटि मिलती है (और कुछ और समान): 'taglib_set_strings_unicode' के लिए अनिर्धारित संदर्भ

क्या इसका मतलब यह है कि मैं जिस फ़ंक्शन को कॉल कर रहा हूं वह नहीं मिल सकता है? मुझे लाइब्रेरी को स्थापित करने में बहुत सारे मुद्दे थे और आखिरकार इसे किसी भी तरह काम करने के लिए मिला। जैसे ही मैंने जेएनआई रैपर लिखना शुरू किया, एंड्रॉइड स्टूडियो ने परियोजना में शामिल नहीं होने वाली .c फ़ाइल के बारे में शिकायत की। एनडीके वेब पेज को देखने के बाद मुझे लगा कि मुझे एक रूट CMakeLists.txt बनाना है और दूसरे दो (टैगलिब के लिए एक और जेएनआई रैपर के लिए) को संदर्भित करना है। मैं सी और सीएमकेलिस्ट के बारे में बहुत कम जानता हूं। मैंने ये ढूंढ निकाला:

cmake_minimum_required(VERSION 3.4.1)

add_subdirectory( # Specifies the directory of the CMakeLists.txt file.
                  /home/adrijan/Development/C++/taglib-1.11.1
                  # Specifies the directory for the build outputs.
                  /home/adrijan/devel/tagtest/taglib/src/main/cpp )
add_library( taglib SHARED IMPORTED )

add_subdirectory( # Specifies the directory of the CMakeLists.txt file.
                  /home/adrijan/devel/tagtest/taglib/src/main/jni
                  # Specifies the directory for the build outputs.
                  /home/adrijan/devel/tagtest/taglib ) 

टैगलिब में पहले से ही एक सीएमकेलिस्ट शामिल हैं, इसलिए मैंने बस इसकी ओर इशारा किया। जेएनआई रैपर के लिए, मैंने निर्देशिका के अंदर CMakeLists.txt रखा जहां कोड है:

cmake_minimum_required(VERSION 3.4.1)

# Specifies a library name, specifies whether the library is STATIC or
# SHARED, and provides relative paths to the source code. You can
# define multiple libraries by adding multiple add.library() commands,
# and CMake builds them for you. When you build your app, Gradle
# automatically packages shared libraries with your APK.

add_library( # Specifies the name of the library.
             jni-taglib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             tagjni.c )

# Specifies a path to native header files.
include_directories(tagjni.h) 

ऐसा लगता है कि मुझे यहां कुछ वास्तव में स्पष्ट याद आ रही है। मेरा मानना ​​है कि इसे सीमेक स्थापित करने के तरीके से कुछ करना है, लेकिन मैं इसे समझ नहीं सकता।

No Answers Yet


HighResolutionMusic.com - Download Hi-Res Songs

1 (G)I-DLE

POP/STARS flac

(G)I-DLE. 2018. Writer: Riot Music Team;Harloe.
2 Ariana Grande

​Thank U, Next flac

Ariana Grande. 2018. Writer: Crazy Mike;Scootie;Victoria Monét;Tayla Parx;TBHits;Ariana Grande.
3 Imagine Dragons

Bad Liar flac

Imagine Dragons. 2018. Writer: Jorgen Odegard;Daniel Platzman;Ben McKee;Wayne Sermon;Aja Volkman;Dan Reynolds.
4 Clean Bandit

Baby flac

Clean Bandit. 2018. Writer: Jack Patterson;Kamille;Jason Evigan;Matthew Knott;Marina;Luis Fonsi.
5 BlackPink

Kiss And Make Up flac

BlackPink. 2018. Writer: Soke;Kny Factory;Billboard;Chelcee Grimes;Teddy Park;Marc Vincent;Dua Lipa.
6 Kelly Clarkson

Never Enough flac

Kelly Clarkson. 2018. Writer: Benj Pasek;Justin Paul.
7 Backstreet Boys

Chances flac

Backstreet Boys. 2018.
8 BTS

Waste It On Me flac

BTS. 2018. Writer: Steve Aoki;Jeff Halavacs;Ryan Ogren;Michael Gazzo;Nate Cyphert;Sean Foreman;RM.
9 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
10 Mako

Rise flac

Mako. 2018. Writer: Riot Music Team;Mako;Justin Tranter.
11 Halsey

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
12 Lady Gaga

I'll Never Love Again flac

Lady Gaga. 2018. Writer: Benjamin Rice;Lady Gaga.
13 Little Mix

Told You So flac

Little Mix. 2018. Writer: Eyelar;MNEK;Raye.
14 Haley Reinhart

Something Strange flac

Haley Reinhart. 2018.
15 Little Mix

Woman Like Me flac

Little Mix. 2018. Writer: Nicki Minaj;Steve Mac;Ed Sheeran;Jess Glynne.
16 Bradley Cooper

Shallow flac

Bradley Cooper. 2018. Writer: Andrew Wyatt;Anthony Rossomando;Mark Ronson;Lady Gaga.
17 Diplo

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
18 Imagine Dragons

Machine flac

Imagine Dragons. 2018. Writer: Wayne Sermon;Daniel Platzman;Dan Reynolds;Ben McKee;Alex Da Kid.
19 KSHMR

Magic flac

KSHMR. 2018.
20 Call Me Karizma

God Damnit flac

Call Me Karizma. 2018. Writer: Illenium;Call Me Karizma.

Related questions

Hot questions

Language

Popular Tags