Java JNA (Java Native Access) dll içindeki fonksiyonu çalıştırma

Başlatan emre_serbes, 23 Haziran 2014 - 22:58:12

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

emre_serbes

Java projemde C#'ta kullandığım bir dll'in fonksiyonunu kullanmak istiyorum fakat dll'i tanıtmama rağmen içindeki fonksiyonu çağıramıyorum. Dll dosyasını kendim oluşturmadım fakat sorunsuz çalışıyor. Ayrıca kodlarını da görmeniz için ekliyorum.

C#'ta şu kodu kullanarak fonksiyonu kullanabiliyorum

            InputSimulator.SimulateTextEntry("Yazdırmak istediğim");
            InputSimulator.SimulateKeyPress(VirtualKeyCode.VK_1); //Sorunum burda da var çünkü keycode gönderemiyorum javadan


Java'da  denediğim kod bloğu ise şu şekilde


package javaapplication3;

import com.sun.jna.Library;
import com.sun.jna.Native;
import java.lang.String;
import java.io.IOException;

public class JavaApplication3 {
   

    public interface WindowsInput extends Library {
       
         void SimulateTextEntry(String s);
    }

    public static void main(String[] args) throws IOException, InterruptedException {
       
        Thread.sleep(2000);
        WindowsInput ins = (WindowsInput) Native.loadLibrary("InputSimulator.dll", WindowsInput.class);
        ins.SimulateTextEntry("asdsad");
       
    }
}


Java'da aldığım hata (Anladığım kadarıyla fonksiyonu çağırabilmek için düzgün metodu kullanmıyorum);


Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'SimulateTextEntry': Belirtilen yordam bulunamadı.

at com.sun.jna.Function.<init>(Function.java:208)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:536)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:513)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:499)
at com.sun.jna.Library$Handler.invoke(Library.java:199)
at com.sun.proxy.$Proxy0.SimulateTextEntry(Unknown Source)
at javaapplication3.JavaApplication3.main(JavaApplication3.java:20)
Java Result: 1


Kullandığım dll dosyası ve kodları için :

http://inputsimulator.codeplex.com/

http://inputsimulator.codeplex.com/SourceControl/latest#README.md




sem

".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

emre_serbes

Kod parçacığını incelemiştim. Fakat kullanan arkadaş Kernel32 sistem dll'ini kullanıyor. Benim amacım içe 3üncü parti bir dll kullanmak.

sem

Aynı yöntem ile DLL'i Java uygulasının çalıştığı dizine ya da lib dizinine atarak denediniz mi? Farklı DLL kullanacak olmanız ile yöntemin farklılık göstermesi paralel şekilde zorunlu olmayabilir.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?