在golang中导入OSX包

  • 本文关键字:OSX 导入 golang macos go
  • 更新时间 :
  • 英文 :


所以,在python中,如果我想访问OSX包,我可以使用objc模块,像这样:

import objc
objc.loadBundle('CoreWLAN', 
       bundle_path='/System/Library/Frameworks/CoreWLAN.framework', 
       module_globals=globals())

是否有一种优雅的方式在golang中做到这一点,也许是一个模块?谷歌找不到多少我的信息。我是否必须使用该语言的C导入功能来调用此功能?这可能吗?

我的具体情况是,我想读取WIFI数据的可用接入点,通道,信号强度和信噪比与谷歌地图地理定位API交谈。

Andlabs给出了一个很好的回答,可惜他没有把它作为答案。

基本上你可以这样使用go…

//cgo LDFLAGS: -framework CoreWLAN

…你可以直接调用框架。引用他的回答:

框架包的顶层包含一个动态加载的库。在系统框架的情况下,这个动态加载的库的文件名是框架的基本名称,并且没有典型的.dylib扩展名。如果您愿意直接使用libdl,这意味着go,您可以动态加载这个dylib并直接调用它的函数。但是由于我们现在使用的是cgo,所以有一个更好的方法://cgo LDFLAGS: -framework CoreWLAN,然后直接从cgo使用API。——andlabs

事实上,深入研究它,CoreWLAN的API是基于Objective-C的,所以你别无选择,只能使用go并做我所说的后者:/(不要试图直接使用Objective-C运行时API;这会导致冗长、不安全和不可移植的代码。)- andlabs

最新更新