3

有人在 Mac OS X 上使用蓝牙和 Lazarus 或 FreePascal 吗?有一个蓝牙单元,但目前只支持Linux。

有关现有单元的信息: http ://wiki.freepascal.org/Bluetooth

我计划增强它以支持 Mac OS,但很高兴知道是否有人已经编写了任何代码来在 Mac OS 上使用蓝牙以避免重复工作。

另一方面,如果您使用 XCode 访问蓝牙,您使用了哪些库?我确信我可以通过打开一些蓝牙应用程序使用 XCode 分析器发现这一点。

注意:Mac OS X 似乎没有使用 Linux 拥有的 BlueZ 库,所以我认为解决方案不像更改库路径那么简单。相反,它具有位于 /System/Library/Frameworks/IOBluetooth.framework 的 IOBluetooth“框架”。

看看,它看起来像:

    kaikei.ocn.ntt.com:IOBluetooth.framework $ 文件 *
    CodeResources:XML 文档文本
    标题:目录
    IOBluetooth:具有 3 种架构的 Mach-O 通用二进制文件
    IOBluetooth(用于架构 x86_64):Mach-O 64 位动态链接共享库 x86_64
    IOBluetooth(适用于 i386 架构):Mach-O 动态链接共享库 i386
    IOBluetooth(用于架构 ppc7400):Mach-O 动态链接共享库 ppc
    资源:目录
    版本:目录

另一方面,我想如果有人已经这样做了,我可能会在谷歌上找到它。如果我错了,请回复并告诉我。

澄清:我之前(fe sqlite3)为普通共享库创建了绑定,但不是为“框架”创建了绑定。如果没有人创建绑定或以其他方式使用 FreePascal 的 MacOS 蓝牙框架,我们将不胜感激有关如何使用 FreePascal 的框架功能的建议。(通常我移植的函数是基于 C 的,而不是 Obj-C,所以我不确定如何在 FPK 中声明 Obj-C 方法,尽管我确信如果我继续搜索,我将能够找到一些示例)。

4

1 回答 1

3

翻译后的 Mac OS X 框架C头文件的主要 svn 存储库是http://svn.freepascal.org/svn/macosxintf/trunk

有时,FPC 版本会与那里托管的最新版本同步。请注意,该存储库中的文件(在 MPPInterfaces 子目录中)采用通用格式,可以自动转换为 FPC、GPC 或 CodeWarrior Pascal 版本。

要生成 FPC 版本,请使用“make fpcinterfaces”,并在 Build/FPCPinterfaces 文件夹中找到结果。

要翻译新的标头,请在已签出的 macosxintf 存储库副本中执行以下操作: ./Scripts/Convert.pl /System/Library/Frameworks/IOBluetooth.framework/Headers/IOBluetooth.h FORCE MPPInterfaces

之后,您仍然需要编辑生成的文件以添加/删除单元并清理自动翻译过程未处理的其他一些事情。完成后,您可能需要在 bugs.freepascal.org 上提交一份包含已完成单元的错误报告。

(注意:因为我没有注册,我只能在每个帖子中添加一个 url,所以下一个 url 有点混乱以绕过这个限制)

您还可以订阅 Mac Pascal 列表 (lists.sonic.net/mailman/listinfo/mac-pascal) 并在那里询问是否有人已经翻译了这些标题。

蓝牙框架确实也包含一些 Objective-C 头文件。Objective-Pascal 支持仅在最新的 FPC svn 版本中可用,如 FPC wiki (google FPC_PasCocoa) 中所述。您需要这种支持才能与 Objective-C 交互。

使用 FPC 的 svn (svn.freepascal.org/svn/fpc/trunk/packages/cocoaint/utils/) 中其他地方的脚本翻译 Objective-C 可能是最简单的

您可能想在上述 Mac Pascal 列表上寻求帮助,因为所有维护上述翻译和翻译工具的人都在那里订阅。

于 2009-11-20T13:52:05.367 回答