2017-04-07 23 views
5

我有什麼
一)我已經使用JNA庫。
b)我的dll是vb.net原生dll文件。
c)你可以檢查此鏈接瞭解更多關於DLL link如何從JNA或其他圖書館訪問類和vb.net本地的dll文件的方法

我的源代碼是繼

接口

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); 
} 

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()); 
     } 
    } 

} 

此代碼工作。

我想
一)如何訪問它們的類和方法,從DLL在Java編程語言是什麼?

b)中如何引用{VertexFX Backoffice API} DLL中,然後定義CVertexFXBOAPI類型的類對象,在此之後調用的方法Object.SetLoginInfoObject.Login

由於

+0

請編輯您的答案。您的課程代碼不包含在內,您沒有正確包含鏈接。你的問題很難理解,我不確定你在問什麼。 –

+0

@ Yep_It's_Me 您現在可以檢查問題 –

+1

我不認爲JNA可以執行.NET或COM。另外,不確定爲什麼你稱這個DLL爲「native」。 –

回答

0

喲可以從共享庫通過JNI使用本機代碼。 JNI提供了Java和你的代碼之間的橋樑。但是,您必須確保您保持原生例程的命名約定。在你的情況下(你有你想要調用的本地代碼的DLL),你可以通過JNI包裝器來編寫代碼。這樣,您可以保持原樣。

看一看這裏的樣本代碼,其中:

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

這不正是你所尋找的東西(如代碼爲MacOS/Linux的),但該模式將是非常相似的。你的JNI包裝器(從Java調用) - 這將是一個本地代碼 - 將加載你已有的庫(一個在其他人生產的DLL中)。然後,您將需要從該DLL調用一個函數。

相關問題