Macos 在golang导入OSX捆绑包?

Macos 在golang导入OSX捆绑包?,macos,go,Macos,Go,因此,在python中,如果我想访问OSX捆绑包,我可以使用如下objc模块: import objc objc.loadBundle('CoreWLAN', bundle_path='/System/Library/Frameworks/CoreWLAN.framework', module_globals=globals()) 在golang有没有一种优雅的方法可以做到这一点,也许是通过一个模块?谷歌找不到我很多。我必须使用该语言的C导入功能来调用它吗?这可

因此,在python中,如果我想访问OSX捆绑包,我可以使用如下objc模块:

import objc
objc.loadBundle('CoreWLAN', 
       bundle_path='/System/Library/Frameworks/CoreWLAN.framework', 
       module_globals=globals())
在golang有没有一种优雅的方法可以做到这一点,也许是通过一个模块?谷歌找不到我很多。我必须使用该语言的C导入功能来调用它吗?这可能吗


我的具体情况是,我想阅读可用接入点、频道、信号强度和信噪比的WIFI数据,以便与Google Maps Geolocation API交谈。

Andlabs给出了一个极好的响应,但遗憾的是他没有给出答案

基本上你是这样使用cgo的

//cgo LDFLAGS: -framework CoreWLAN
…您可以直接调用框架。引用他的回答:


framework包在其顶层包含一个动态加载的库。对于系统框架,这个动态加载的库的文件名是框架的基本名称,没有典型的.dylib扩展名。如果您愿意直接使用libdl,也就是cgo,那么可以动态加载这个动态库并直接调用它的函数。但是因为我们现在使用的是cgo,所以有一种更好的方法://cgo LDFLAGS:-framework CoreWLAN,然后直接从cgo使用API安德拉布拉斯


事实上,仔细研究一下,CoreWLAN的API是基于Objective-C的,所以你别无选择,只能使用cgo,然后按照我说的做:/(不要试图直接使用Objective-C运行时API;这会导致冗长、不安全和不可移植的代码)–andlabs


如果可能的话,通过C.A.framework包在其顶层包含一个动态加载的库。对于系统框架,这个动态加载的库的文件名是框架的基本名称,没有典型的
.dylib
扩展名。如果您愿意使用cgo,您可以动态加载这个动态库并直接调用它的函数。但是,既然我们现在正在使用cgo,有一个更好的方法:
//cgo LDFLAGS:-framework CoreWLAN
,然后直接从cgo使用API。事实上,仔细研究一下,CoreWLAN的API是基于客观C的,所以你别无选择,只能使用cgo并按照我说的做后者:/(不要试图直接使用Objective-C运行时API;这会导致冗长、不安全和不可移植的代码。)我想我需要cgo,你应该把它作为一个答案,因为这是我肯定要做的。谢谢!