包含 CoreBluetooth 框架的 MacOS link 库

MacOS link library containing CoreBluetooth framework

我正在尝试使用 Java Native Access (JNA) to provide a Java interface to the CoreBluetooth 框架,它是 MacOS 的一个组成部分(在我的例子中是版本 12.1) .

看来我需要访问 MacOS link 库以便 JNA 确定元素可用的接口。但是,我似乎无法找到为该框架提供 类、方法等的 link 库文件。

我查看了以下捆绑包但没有成功:

我也扫描了 /usr/lib 的内容,但我没有看到与 CoreBluetooth 相关的任何内容,而且我不想查看每个 .dylib 系统上的文件。

有什么可以找到该文件的建议吗?或者有没有其他方法可以设置 JNA 接口到 CoreBluetooth?

您可以照常在 JNA 中按名称加载库(5.6 或更高版本)。

public interface CoreBluetooth extends Library {

    CoreBluetooth INSTANCE = Native.load("CoreBluetooth", CoreBluetooth.class);

    // mappings
}

但是,您不会在 macOS 11 或更高版本的文件系统中找到它。来自 macOS Big Sur 11.0.1 Release Notes:

New in macOS Big Sur 11.0.1, the system ships with a built-in dynamic linker cache of all system-provided libraries. As part of this change, copies of dynamic libraries are no longer present on the filesystem. Code that attempts to check for dynamic library presence by looking for a file at a path or enumerating a directory will fail. Instead, check for library presence by attempting to dlopen() the path, which will correctly check for the library in the cache.

JNA 5.6 已更新为使用此新行为。

也就是说,我的系统上有一个框架的副本,或者至少是头文件,位于以下路径下:

/Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/CoreBluetooth.framework/

这对于加载到 JNA 中没有用,但如果在线文档不足,它确实会提供头文件。我不确定为什么您在自己的命令行工具路径中没有它,或者我的安装与您的安装有何不同。