Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2015, 13:23   #1
moon-guest
Пользователь
 
Аватар для moon-guest
 
Регистрация: 14.11.2010
Сообщений: 27
По умолчанию JNA и классы в библиотеке

Добрый день форумчане!!!
Решил для самообразования поэкспериментировать с dll в java.
Примеров нашлось уйма на просторах интернета, но когда подобрался к классам тут-то и ждала меня ложка дёгтя(((
Как таково все рассматриваемые примеры работают с отдельными функциями в классе, но не где и даже не кто не заикается про класс объявленный в библиотеке.
Я пробовал через интерфейсы как когда-то с плагинами на Delphi, но не получилось...

Java
Код:
import com.sun.jna.Library;
import com.sun.jna.Native;

public class Main {
	
	public interface IDllIntf {
		int DoSomething();
	}
	
	public interface DelphiLib extends Library {
		IDllIntf GetMyInterfacedObject();
	}
	
	private static final DelphiLib libD = (DelphiLib) Native.loadLibrary("JDLL", DelphiLib.class);
	
	public static void main(String[] args) {
		IDllIntf intrf = libD.GetMyInterfacedObject();
		System.out.print(intrf.DoSomething());
		
	}

}
Delphi
Код:
library JDLL;

uses
  SysUtils,
  Classes, System;

type
  IDllIntf = interface(IInterface)
  ['{B212D559-5F11-4FE6-A597-33614805DE86}']
    function DoSomething: integer; safecall;
  end;

  TDllClass = class(TInterfacedObject, IDllIntf)
    constructor Create;
    function DoSomething: integer; safecall;
  end;

constructor TDllClass.Create;
begin
end;

function TDllClass.DoSomething: integer;  safecall;
begin
  result:= Random(100);
end;

function GetMyInterfacedObject: IDllIntf; safecall;

begin
  Result := TDllClass.Create as IDllIntf;
end;

exports GetMyInterfacedObject;

begin

end.
кто чем может...
moon-guest вне форума Ответить с цитированием
Старый 18.01.2015, 16:56   #2
moon-guest
Пользователь
 
Аватар для moon-guest
 
Регистрация: 14.11.2010
Сообщений: 27
По умолчанию

Проблему с использованием класса решилась благодаря сайтам и книгам по автоматизации.

Java
Код:
import com.sun.jna.Library;
import com.sun.jna.Native;

public class MainHmi {
	public interface TMyClass extends Library {
		void Init();
		void unInit();
		void Proc(int a, int b);
		int Func();
	}
	
	private static final TMyClass libD = (TMyClass) Native.loadLibrary("JDLL", TMyClass.class);
	
	public static void main(String[] args) {
		libD.Init();
		libD.Proc(7, 3);
		System.out.print(libD.Func());
		libD.unInit();	
	}
}
Delphi

Код:
library JDLL;

uses
  SysUtils,
  Classes,
  System,
  uClass in 'uClass.pas';

var
  MyClass: TMyClass;

procedure Init; stdcall;
begin
  MyClass:= TMyClass.Create;
end;

procedure unInit; stdcall;
begin
  MyClass.Free;
end;

procedure Proc(vPer1, vPer2: integer); stdcall;
begin
  MyClass.proc1(vPer1, vPer2);
end;

function Func: integer;  stdcall;
begin
  result:= MyClass.func1;
end;

exports

  Init,
  unInit,
  Proc,
  Func;

begin

end.


unit uClass;

interface

uses
  Classes;

type
  TMyClass=class
  private
    perem: integer;

  public
    constructor Create;
    destructor Destroy; override;

    procedure proc1(per1, per2: integer);
    function func1: integer;
  end;

implementation

constructor TMyClass.Create;
begin
end;

destructor TMyClass.Destroy;
begin
end;

procedure TMyClass.proc1(per1, per2: integer);
begin
  perem:= per1+per2;
end;

function TMyClass.func1: integer;
begin
  result:= perem;
end;

end.
Но осталась одна не решённая проблемКа - Это СОБЫТИЯ!!!
И как её решить пока не могу понять. У кого есть идеи?????
moon-guest вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по библиотеке. C# PROkaZZZniK Помощь студентам 1 10.05.2012 22:26
вопрос по библиотеке JIeka Общие вопросы C/C++ 8 26.08.2011 18:19
В библиотеке Mika_32 Паскаль, Turbo Pascal, PascalABC.NET 2 04.04.2010 19:00
Вопрос по библиотеке jQuery Help_me JavaScript, Ajax 5 04.03.2009 12:57