Не может использовать nil как тип _Ctype_CFAllocatorRef в качестве аргумента для литерала func

Я запускаю команду ниже, чтобы установить пакет для модульных тестов, написанных на go для Solidity.

go install ./cmd/abigen

Но я получаю ниже ошибки:

# github.com/ethereum/go-ethereum/vendor/github.com/rjeczalik/notify
vendor/github.com/rjeczalik/notify/watcher_fsevents_cgo.go:51:216: cannot use nil as type _Ctype_CFAllocatorRef in argument to func literal
vendor/github.com/rjeczalik/notify/watcher_fsevents_cgo.go:165:47: cannot use nil as type _Ctype_CFAllocatorRef in argument to _Cfunc_CFStringCreateWithCStringNoCopy
vendor/github.com/rjeczalik/notify/watcher_fsevents_cgo.go:166:225: cannot use nil as type _Ctype_CFAllocatorRef in argument to func literal

Go версия: Go версия Go1.11.4 Дарвин / AMD64

0 ответов

У меня тоже была эта проблема. Для меня проблемой была версия Geth vs Go, которую я использовал. Вероятно, вам нужно обновить geth до текущей версии или хотя бы до версии geth v1.8.16

https://github.com/ethereum/go-ethereum/issues/17751

Это было не вариант для меня, поэтому я нашел второе решение. В этих строках кода вы увидите nils, вам не нужно переключать их все, но если вы переключите те, которые указаны в C.kCFAllocatorDefault, это должно сработать. Пример фактической замены приведен ниже.

51

var source = C.CFRunLoopSourceCreate(C.kCFAllocatorDefault, 0, &C.CFRunLoopSourceContext{
    perform: (C.CFRunLoopPerformCallBack)(C.gosource),
})

165

p := C.CFStringCreateWithCStringNoCopy(C.kCFAllocatorDefault, C.CString(s.path), C.kCFStringEncodingUTF8, C.kCFAllocatorDefault)

166

path := C.CFArrayCreate(C.kCFAllocatorDefault, (*unsafe.Pointer)(unsafe.Pointer(&p)), 1, nil)
Другие вопросы по тегам