- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我通过 C
GoLang 的包在 GoLang 上编写了一个包含 Objective-C 代码(调用一些 OSX API)的程序,我需要从 Go 传递类型为 T
的变量代码到 Objective-C 代码,反之亦然。 T
是结构(或其他类型)。所以我需要在 GoLang 中创建兼容的(在内存布局方面)类型/变量,并通过 unsafe.Pointer
转换将其传递给 Objective-C。对于通用 C 代码,我在这种情况下使用 godefs
,但我无法将 godefs
用于 Objective-C。如果我尝试 go tool cgo -godefs cgodefs.go
// This is "cgodefs.go" file
package tmp
/*
#cgo CFLAGS: -x objective-c
#cgo LDFLAGS: -framework Cocoa
#import <Cocoa/Cocoa.h>
*/
import "C"
type CGPoint C.CGPoint
我收到大量错误:
In file included from /Users/unsacrificed/go/src/gui/cgodefs.go:10:
In file included from /System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h:12:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:8:
/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:503:1: error: expected identifier or '('
@class NSString, Protocol;
^
/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:505:9: error: unknown type name 'NSString'
typedef NSString * NSExceptionName NS_EXTENSIBLE_STRING_ENUM;
^
/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:506:9: error: unknown type name 'NSString'
typedef NSString * NSRunLoopMode NS_EXTENSIBLE_STRING_ENUM;
... (100000+ lines of errors)
有趣的是,我可以通过 C
GoLang 的包使用 Objective-C 编译和运行 GoLang 应用程序。
我report到 GoLang 但他说
The cgo tool works with C, not Objective-C.
有什么方法可以获得 Objective-C 类型的 GoLang 等效(内存兼容)类型?
最佳答案
终于找到解决办法了。可以做我想做的事。我唯一错过的是:godefs
忽略了 #cgo CFLAGS: -x objective-c
行。解决方案 - 将所需的 CFLAGS 作为参数传递给 go
二进制文件 (-- -x objective-c
)。工作示例:
// +build ignore
package tmp
//go:generate go tool cgo -godefs -- -x objective-c cgodefs.go
//#import <Cocoa/Cocoa.h>
import "C"
type CGPoint C.CGPoint
输出:
// Created by cgo -godefs - DO NOT EDIT
// cgo -godefs -- -x objective-c cgodefs.go
package tmp
type CGPoint struct {
X float64
Y float64
}
关于objective-c - cgo godefs 和 Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48527333/
我已经使用 goclipse 有一段时间了。除了在编辑器中打开的同一个文件中的定义之外,我从来没有让 godef 在 eclipse 中工作。我从来没有打扰过,但这次我想我会解决这个问题。但看起来我无
我安装 godef: $ go get -u github.com/rogpeppe/godef 看起来不错: $ which godef /home/username/go/bin/godef 就在
我正在尝试在 OpenSUSE 上使用来自 emacs 的 godef。 尝试安装 godef:去获取 code.google.com/p/rog-go/exp/cmd/godef 也试过:go in
first I pull the soure code or zipfile, They both show the same error log like this when I go build
我正在尝试使用以下命令安装 godef 二进制文件: go get -v code.google.com/p/rog-go/exp/cmd/godef 但是它总是给我错误: package code.
我通过 C GoLang 的包在 GoLang 上编写了一个包含 Objective-C 代码(调用一些 OSX API)的程序,我需要从 Go 传递类型为 T 的变量代码到 Objective-C
在我升级到 Go 1.4 后,godef 不再在标准库中找到很多东西,例如 Testing.Fatalf。 当我尝试 go get -u 时,出现以下错误: package code.google.c
我已经通过安装 godef go get github.com/rogpeppe/godef 我安装了 emacs go-mode,并在我的 .bashrc 中导出了以下内容: export GORO
我正在使用带有Go扩展名的VS Code,但是我注意到当我右键单击某个方法并选择“转到定义”时,找不到任何定义。例如, 这是在我使用Cobra生成的示例应用程序中: cobra init myCobr
我是一名优秀的程序员,十分优秀!