2017-04-07 69 views
5

Co mam
a) Użyłem biblioteki jna.
b) Mój plik dll jest rodzimym plikiem dll vb.net.
c) Można sprawdzić ten link, aby uzyskać więcej o dll linkJak uzyskać dostęp do klas i metod pliku dll vb.net z jna lub innej biblioteki

Mój kod źródłowy jest następujący

interfejsu

package com.dll.lib; 

import com.sun.jna.Library; 
import com.sun.jna.Native; 

public interface BrowseControl extends Library { 
    BrowseControl instance = (BrowseControl)Native.loadLibrary("Vertex FXBOAPI10.5.9", BrowseControl.class); 
} 

klasy

package com.dll.main; 

import com.dll.lib.BrowseControl; 

public class MainTest { 

    public static void main(String[] args) { 
     BrowseControl control=BrowseControl.instance; 
      System.out.println("Brwoser: "+control.getClass()); 
     } 
    } 

} 

Ten kod działa.

Co chcę
a) w jaki sposób uzyskać dostęp do swoich klas i metodę z DLL w języku programowania Java?

b) jak odwołać DLL {VertexFX Backoffice API}, następnie zdefiniować obiekt typu CVertexFXBOAPI klasy, potem wywołać metody Object.SetLoginInfo i Object.Login

Dzięki

+0

Edytuj odpowiedź. Kod twojej klasy nie został uwzględniony, link nie został poprawnie dołączony. Twoje pytanie jest trudne do zrozumienia, nie jestem pewien, o co pytasz. –

+0

@ Yep_It's_Me Możesz teraz sprawdzić pytanie –

+1

Nie sądzę, że JNA może zrobić .NET lub COM. Ponadto, nie wiesz, dlaczego nazywasz DLL "natywny". –

Odpowiedz

0

Yo można użyć kodu macierzystego z udostępnionej biblioteki poprzez JNI. JNI zapewnia most między Javą i kodem. Musisz jednak upewnić się, że zachowujesz konwencję nazewnictwa dla swoich natywnych procedur.

W twoim przypadku (gdzie masz DLL z natywnym kodem, do którego chcesz zadzwonić) możesz przejść przez opakowanie JNI, które zakoduje kod. W ten sposób możesz pozostawić bibliotekę DLL taką, jaka jest.

Spójrz tutaj przykładowy kod gdzie:

http://jnicookbook.owsiak.org/recipe-No-018/

To nie jest dokładnie to, czego szukasz (jak kod jest dla MacOS/Linux), ale schemat będzie bardzo podobna.

Twoje opakowanie JNI (wywoływane z Javy) - będzie to kod natywny - załaduje bibliotekę, którą już posiadasz (taką, która znajduje się w bibliotece DLL utworzonej przez kogoś innego). Następnie musisz wywołać funkcję z tej biblioteki DLL.