Question

If I try to implement my class on this file I get an error UnsatisfiedLinkError, however if I remove the implementation of the Broker.h Class it goes ok. Why?

Broker.h

#include "XletTable.h"

#ifndef BROKER_H_
#define BROKER_H_

class Broker {
private:
    static Broker* brokerSingleton;
    static XletTable *table;

    // Private constructor for singleton
    Broker(JNIEnv *, XletTable *);

    // Get XletTable (Hash Table) that contains the...
    static XletTable* getTable();

public:
    virtual ~Broker();
    static Broker* getInstance(JNIEnv *);
    jobject callMethod(JNIEnv *, jclass, jstring, jobject, jbyteArray);
};

#endif /* BROKER_H_ */

BrokerJNI.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Broker */

#ifndef _Included_Broker
#define _Included_Broker
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Broker
 * Method:    callMethod
 * Signature: (Ljava/lang/String;Ljava/lang/reflect/Method;[B)Ljava/lang/Object;
 */
JNIEXPORT jobject JNICALL Java_Broker_callMethod
  (JNIEnv *, jclass, jstring, jobject, jbyteArray);

#ifdef __cplusplus
}
#endif
#endif
Was it helpful?

Solution

Probably your library miss reference to some symbol, or another library. Try make some main.cpp with empty main() function, and link it with your library - g++ main.cpp -o main -lInterAppCC. If you miss something, the linker will give you a detailed error message.

PS. Since your header file already wraps function prototype with extern "C", you don't required to do the same when writing implementation.

OTHER TIPS

You need to use extern "C" around the JNIEXPORT stuff, to avoid c++ name mangling of the JNI functions.

C++ name mangling changes function names (in the obj-files) to include the types of parameters, virtual-ness, etc, to be able to link different overloaded functions with the same name.

So, wrap your JNIEXPORT with extern "C" { ... } (look at the JNI header) and make sure your c++-code isn't wrapped in the same.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top