PureBoard
http://forums.purebasic.com/german/

PB-DLL-Funktion via JNI in Java aufrufen
http://forums.purebasic.com/german/viewtopic.php?f=7&t=26970
Seite 1 von 1

Autor:  #Ton [ 07.07.2013 12:23 ]
Betreff des Beitrags:  PB-DLL-Funktion via JNI in Java aufrufen

Hallo,

Ich habe folgendes Problem:

Ich habe eine PB-DLL names "test.dll", welche ich zwar erfolgreich laden kann, jedoch die Funktion test() nicht aufrufen kann.
Dabei bekomme ich folgende Errormessage bei Eclipse:
"Exception in thread "main" java.lang.UnsatisfiedLinkError: Controller.test()I
at Controller.test(Native Method)
at Controller.main(Controller.java:12)"

Java Quellcode:
Code:
public class Controller
{
   static {System.loadLibrary("test");}
   
   public native int test();
   
   
   // Main()
   public static void main(String[] args) throws InterruptedException
   {
      Controller t = new Controller();
      System.out.println(t.test());
   }
   
   
   // Constructor()
   public Controller() throws InterruptedException
   {
      
   }

}



PureBasic Quellcode der DLL:
Code:
EnableExplicit

ProcedureDLL.i test()
 
  Protected.i a = 3
  Protected.i b = 5
  Protected.i c = #Null
 
  c = a+b
 
  ProcedureReturn c
 
EndProcedure




Ich habe oft gelesen, dass man irgendwie eine Header-Datei erstellen muss, da die DLL-Funktion bestimmten Konventionen genügen muss, nur ich habe nicht die leiseste Ahnung wie ich da vorgehen muss und passende Beispiele habe ich ebenfalls nicht gefunden.
Kann mir wer weiterhelfen?

Grüße
Toni

Autor:  Nighthawk [ 07.07.2013 23:35 ]
Betreff des Beitrags:  Re: PB-DLL-Funktion via JNI in Java aufrufen

Hallo #Ton,
schau dir mal JNA an.

https://github.com/twall/jna

Damit kannst du eine native Dll die, die stdcall-Aufrufkonvention unterstützt einfach in dein Projekt mit
einbinden.Man braucht sich nicht einmal Gedanken um das Marshalling zu machen, da dies von der Lib
selbst erledigt wird.

Gruß
Nighthawk

Autor:  juergenkulow [ 07.10.2019 23:32 ]
Betreff des Beitrags:  Re: PB-DLL-Funktion via JNI in Java aufrufen

Hallo #Ton,

Froggerprogger aus dem englischen Forum hat mir bei dem Problem geholfen:
problem calling a PB-DLL from Java

Gruß

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/