簡體   English   中英

從Java獲取本機動態庫文件擴展名

[英]Get native dynamic library filename extension from Java

在Java中,是否有一種方法可以僅使用JDK或javax庫來查詢當前平台的動態庫文件擴展名? 例如,定義的系統屬性?

作為第二種選擇,是否存在第三方Java庫?

作為第三種選擇,問題是否如此瑣碎,我可以輕松地自己滾動( 例如 Windows上的.dll,其他任何地方都使用.so)?

您可以使用以下API獲得所需的內容:

System.mapLibraryName("your_library");

在Linux上,返回值為“ libyour_library.so”,在Windows上,返回值為“ your_library.dll”。 因此,如果您僅對擴展感興趣,則可以執行以下操作:

final String libname = System.mapLibraryName("test");
final String libext = libname.substring(libname.lastIndexOf('.')+1);

Java的“標准”本機互操作系統是JNA 它已經存在很長時間了,得到了很好的支持,並且幾乎可以處理您想要的大多數本機調用方案。 當然,它也支持加載動態庫。

您應該考慮將JNA用於您的項目,或者失敗了,以查看如何決定正確的動態庫擴展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM