einfache C++ DLL in Java benutzen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • einfache C++ DLL in Java benutzen

    Servus... Ich versuche grade eine in C++ geschriebene DLL in mein Java Programm einzubinden...

    Wieso und warum ist erstmal egal... Ich hab mir da schon gedanken drüber gemacht. Und mir ist wohl bewusst, dass ich dadruch die Systemunabhängigkeit verliere. Aber das ist alles erstmal irrelevant.

    Ich möchte zuersteine DLL schreiben mit der ich zwei Zahlen zusammen addieren kann.

    So sieht mein erster Versuch aus:

    Die DLL-Datei:

    main.h:

    Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. namespace TEST
    4. {
    5. class Test
    6. {
    7. public:
    8. static _declspec(dllexport) int addieren(int a, int b);
    9. };
    10. }
    Alles anzeigen


    main.cpp:

    Quellcode

    1. #include "main.h"
    2. namespace TEST
    3. {
    4. int Test::addieren(int a, int b)
    5. {
    6. return a+b;
    7. }
    8. }

    Die DLL lässt sich auch Problemlos kompilieren.

    Und nun mein Java-Code:
    Test.java

    Quellcode

    1. public class Test
    2. {
    3. static
    4. {
    5. System.loadLibrary("addieren");
    6. }
    7. public static native int addieren(int a, int b);
    8. public static void main()
    9. {
    10. System.out.println(addieren(3,6));
    11. }
    12. }
    Alles anzeigen


    Die Fehlermeldung:
    java.lang.UnsatisfiedLinkError: Test.addieren(II)I
    at Test.addieren(Native Method)
    at Test.main(Test.java:12)

  • Um nicht extra ein neuen Thread zu erstellen.

    Wie sieht das mit der Programmlaufzeit aus wenn man DLL's benutzt.
    Wird ein Algorithmus der in eienr DLL Datei geschrieben ist unabhängig von der Java-VM berechnet (also in der geschwindigkeit wie bei einer üblichen c++ anwendung).
    Oder beeinflusst java die Laufzeit?