# Netbeans JNI DLL



## moessi91 (16. Nov 2011)

Hallo, ich versuche mich gerade an JNI und ich habe jetzt ein java programm und das C programm. Die DLL wird erstellt. Wenn ich sie aber in dem Java programm ausführe dann wirft sie einen Fehler. Wenn ich eine DLL von einem Freund benutze funktioniert es. Weiters wollte ich wissen ob es in netbeans eine funktion gibt um das headerfile zu erstellen?
 Ich poste mal den Code: 

```
package test;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


/**
 *
 * @author Administrator
 */
public class JNITest {

    static{
        try{
        System.loadLibrary("libAPR_-_C_-_JNI_-_FirstDLL");
        }catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
    
    public JNITest()
    {
        try{
        
        System.out.println(callNative());
        }catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
    
    public native String callNative();
    
    public static void main(String[] args) {
        new JNITest();
    }
}
```
hier die c datei

```
#include <stdio.h>
#include <jni.h>
#include "JNITest.h"

JNIEXPORT jstring JNICALL Java_test_JNITest_callNative(JNIEnv *env, jobject obj)
{
  jstring jstr;


  printf("Java ruft native Code auf\n");

  jstr = (*env) -> NewStringUTF(env, "Hallo");
  return jstr;
}
```
und hier die h datei

```
/* 
 * File:   JNITest.h
 * Author: Administrator
 *
 * Created on 16. November 2011, 12:14
 */
#include <jni.h>
#ifdef _cplusplus
extern "C" {
#endif

JNIEXPORT jstring JNICALL Java_test_JNITest_callNative(JNIEnv *, jobject);

#ifdef _cplusplus
}
#endif
```
bitte um rasche hilfe


----------



## Marco13 (16. Nov 2011)

Lesbare Code-Tags und die genauere Fehlermeldung könnten helfen.


----------



## moessi91 (29. Nov 2011)

Habe den Fehler gefunden. 
Es war kein Fehler im Code sondern man muss bei Netbeans unter den Einstellungen folgendes machen:
1. Klick mit Rechtsklick auf dein C Projekt
2. Wähle "Properties" aus
3. Klick auf "C-Compiler"
4. Dort gibt es jetzt unter CommandLine den Eintrag Additional Options.
5. Füge hier folgenden Code ein: -Wl,--kill-at

Jetzt funktioniert die erstellte DLL auch 

Ich hoffe ich habe damit jemandem geholfen, weil ich habe ewig nach einer Lösung gesucht.


----------

