JNA kullanarak özel .lib/.dll işlevlerine nasıl erişirim? Birisi bir örnek verebilir mi?Özel dll'ye bağlanmak için JNA'yı kullanma
Teşekkür ederiz.
JNA kullanarak özel .lib/.dll işlevlerine nasıl erişirim? Birisi bir örnek verebilir mi?Özel dll'ye bağlanmak için JNA'yı kullanma
Teşekkür ederiz.
Örnek (from Wikipedia): Bu durumda
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.Native;
/** Simple example of Windows native library declaration and usage. */
public class BeepExample {
public interface Kernel32 extends StdCallLibrary {
// FREQUENCY is expressed in hertz and ranges from 37 to 32767
// DURATION is expressed in milliseconds
public boolean Beep(int FREQUENCY, int DURATION);
public void Sleep(int DURATION);
}
public static void main(String[] args) {
Kernel32 lib = (Kernel32) Native.loadLibrary("kernel32",
Kernel32.class);
lib.Beep(698, 500);
lib.Sleep(500);
lib.Beep(698, 500);
}
}
, biz "kernel32.dll" kütüphaneden yükleyin. Umarım bu, JNA'yı daha net yapar.
DÜZENLEME: Kodu açıklayacağım: Kitaplıktan gereksinim duyduğunuz işlevlerle (com.sun.jna.Library öğesini genişleten) bir arabirim tanımlamanız gerekir. Sonra, com.sun.jna.Native.loadLibrary (ArabirimAdı), InterfaceName.class) öğesini çağırın. Son olarak, çıkışı bir değişkende arayüzün türü ile saklayın. Sadece bu değişkenden fonksiyonları çağırınız.
Verdiğiniz belirli örnek için StdCallLibrary'ı genişletmeniz gerekir. Kullanıcının özel kitaplığına uygulanıp uygulanmayacağı, kitaplığın kullandığı çağrı kurallarına bağlıdır. – technomage
Özel dll'im için yol nasıl sağlanıyor dll'im e:/Mydll içinde bir yerdeyse. o zaman nasıl yolunu sağlamak için ve MyDiğer diğer dll ve kütüphane kullanılarak yapılmış sonra da bu dll için bir yere yol sağlamak gerekir mi? – Jony