包含 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 库文件。
我查看了以下捆绑包但没有成功:
/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
?
您可以照常在 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 中没有用,但如果在线文档不足,它确实会提供头文件。我不确定为什么您在自己的命令行工具路径中没有它,或者我的安装与您的安装有何不同。
我正在尝试使用 Java Native Access (JNA) to provide a Java interface to the CoreBluetooth 框架,它是 MacOS 的一个组成部分(在我的例子中是版本 12.1) .
看来我需要访问 MacOS link 库以便 JNA 确定元素可用的接口。但是,我似乎无法找到为该框架提供 类、方法等的 link 库文件。
我查看了以下捆绑包但没有成功:
/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
?
您可以照常在 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 中没有用,但如果在线文档不足,它确实会提供头文件。我不确定为什么您在自己的命令行工具路径中没有它,或者我的安装与您的安装有何不同。