einfache C++ DLL in Java benutzen

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • 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:

    Source Code

    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. }
    Display All


    main.cpp:

    Source Code

    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

    Source Code

    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. }
    Display All


    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?