[C++] C++-Code für JNI compilieren

Jellysheep

Erfahrenes Mitglied
Hi!
Ich versuch mich grade an JNI und hab das Beispiel von "Java ist auch eine Insel" (http://www.boscheri.ch/computer/java/javainsel5/javainsel24_001.htm) ausprobieren wollen.
Jetzt hab ich die Datei StrLen.java (bzw. StrLen.class) mit dem Code
Code:
public class StrLen 
{ 
  static { 
    System.loadLibrary( "strlen" ); 
  } 
  public static native int strlen( String s ); 
}
und die generierte Datei StrLen.h
Code:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class StrLen */

#ifndef _Included_StrLen
#define _Included_StrLen
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     StrLen
 * Method:    strlen
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_StrLen_strlen
  (JNIEnv *, jclass, jstring);

#ifdef __cplusplus
}
#endif
#endif
und noch die StrLen.c
Code:
#include <jni.h>
#include "StrLen.h"
#include <stdio.h>
JNIEXPORT jint JNICALL Java_com_javatutor_jni_StrLen_strlen( JNIEnv *env, jclass clazz, jstring s )
{
  printf( "Hallo Java-Freunde!\n" );
  return 0;
}

Wie (mit welchem Compiler) kann ich jetzt das Ganze zu einer .dll kompilieren lassen?
 
Wenn ich mich nicht irre, steht hier alles wichtige:
24.2.5 Übersetzen der C-Programme und Erzeugen der dynamischen Bibliothek
Du kannst für den C-Teil z. B. die GCC oder Visual C++ hernehmen.
Wenn da was unklar ist, dann stell doch deine Frage bitte etwas konkreter :) .
 
Ich habs mit Visual C++ probiert und die .dll erzeugt, aber wenn ich dann die StrLenDemo starte, kommt nur
Exception in thread "main" java.lang.UnsatisfiedLinkError: StrLen.strlen(Ljava/l
ang/String;)I

Woher kommt das?
 
Zurück