我正在嘗試使用Java Native Access ( JNA ) 為CoreBluetooth框架提供Java介面,該框架是MacOS不可或缺的一部分(在我的例子中是 12.1 版)。
看來我需要訪問MacOS鏈接庫才能讓JNA確定可用的界面元素。但是,我似乎找不到為此框架提供類、方法等的鏈接庫檔案。
我查看了以下捆綁包,但沒有成功:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreBluetooth.framework/System/Library/Frameworks/CoreBluetooth.framework/System/Library/PrivateFrameworks/CoreBluetoothUI.framework
我也掃描了 的內容/usr/lib,但沒有看到任何與 相關的內容,而且我不想CoreBluetooth查看系統上每個.dylib檔案的內容。
有什么建議可以在哪里找到這個檔案?或者還有其他方法可以設定JNA介面CoreBluetooth嗎?
uj5u.com熱心網友回復:
您可以像往常一樣在 JNA 中按名稱加載庫(版本 5.6 或更高版本)。
public interface CoreBluetooth extends Library {
CoreBluetooth INSTANCE = Native.load("CoreBluetooth", CoreBluetooth.class);
// mappings
}
但是,您不會在 macOS 11 或更高版本的檔案系統中找到它。來自macOS Big Sur 11.0.1 發行說明:
macOS Big Sur 11.0.1 中的新增功能,該系統附帶了所有系統提供的庫的內置動態聯結器快取。作為此更改的一部分,檔案系統上不再存在動態庫的副本。嘗試通過在路徑中查找檔案或列舉目錄來檢查動態庫是否存在的代碼將失敗。相反,通過嘗試 dlopen() 路徑來檢查庫是否存在,這將正確檢查快取中的庫。
JNA 5.6 已更新為使用此新行為。
也就是說,我的系統上的以下路徑下確實有一個框架副本,或者至少是頭檔案:
/Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/CoreBluetooth.framework/
這對于加載到 JNA 中沒有用,但如果在線檔案不足,它確實提供了頭檔案。我不確定為什么您自己的命令列工具路徑中沒有它,或者我的安裝與您的安裝有何不同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/411978.html
標籤:
