2017-04-07 6 views
5

私が持っているもの
a)私はjnaライブラリを使用しています。
b)私のDLLはvb.netネイティブdllファイルです。
C)あなたは私のソースコードがjbやその他のライブラリから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 link

の詳細については、このリンクをチェックすることができます。私は
欲しい

a)は、Javaプログラミング言語でDLLから自分のクラスやメソッドにアクセスするにはどのように?

b)の方法{VertexFX Backoffice API} DLLを参照するために、それがメソッドを呼び出した後、次いで、ヨはJNIを介して共有ライブラリからネイティブコードを使用することができObject.SetLoginInfoObject.Login

おかげ

+0

回答を編集してください。あなたのクラスのコードは含まれていません、あなたは適切にリンクを含めていません。あなたの質問は理解するのが難しいです、私はあなたが何を求めているのか正確には分かりません。 –

+0

@ Yep_It's_Me 質問を確認できるようになりました –

+1

JNAが.NETやCOMを実行できるとは思いません。また、DLLを「ネイティブ」と呼ぶ理由もわかりません。 –

答えて

0

をタイプCVertexFXBOAPIクラスのオブジェクトを定義します。 JNIは、Javaとあなたのコードの間に橋渡しをします。ただし、ネイティブ・ルーチンの命名規則を守っておく必要があります。

あなたの場合(ネイティブコードを呼び出すDLLがある場合)、コードをコーディングするJNIラッパーを経由することができます。これにより、そのままDLLを残すことができます。

は、サンプルコードについてはこちらをご覧ください。ここで

これは(コードはMacOSの/ Linuxの場合のように)あなたが探しているが、スキーマが非常に似ています正確に何ではありませんhttp://jnicookbook.owsiak.org/recipe-No-018/

あなたのJNIラッパー(これはJavaから呼び出されます)はネイティブコードになります。既に持っているライブラリ(他の誰かが作成したDLLの中にあるもの)をロードします。次に、そのDLLから関数を呼び出す必要があります。

関連する問題