为了账号安全,请及时绑定邮箱和手机立即绑定

使用 cgo 包装 <dispatch/dispatch.h> 时构建错误

使用 cgo 包装 <dispatch/dispatch.h> 时构建错误

Go
达令说 2021-06-17 22:21:06
我正在尝试使用 XPC、GCD 并继续运行,但是当我的代码无法编译时出现以下错误消息(我不明白),我很快就遇到了问题:main(__DATA/__const): unexpected reloc for dynamic symbol _NSConcreteGlobalBlock main(__DATA/__const): unhandled relocation for _NSConcreteGlobalBlock (type 28 rtype 120)我正在使用go build以下代码进行编译:main.gopackage main/*#include <xpc/xpc.h>#include "wrapper.h"*/import "C"import (    "fmt")//export HandleXPCEventfunc HandleXPCEvent(event C.xpc_object_t) {    fmt.Println("Event was handled")}func main() {    name := C.CString("com.example.xpc")    queue := C.dispatch_queue_create(name, nil)    conn := C.xpc_connection_create(name, queue)    C.set_event_handler(conn)    //C.xpc_connection_resume(conn)}包装器.h#ifndef _WRAPPER_H_#define _WRAPPER_H_#include <stdlib.h>#include <stdio.h>#include <xpc/xpc.h>xpc_connection_t connect( char* name);void set_event_handler(xpc_connection_t connection);#endif包装器#include "wrapper.h"#include <dispatch/dispatch.h>extern void HandleXPCEvent(xpc_object_t);xpc_connection_t connect( char* name) {    dispatch_queue_t queue = dispatch_queue_create(name,0);    return xpc_connection_create(name,queue);}void set_event_handler(xpc_connection_t connection) {    xpc_connection_set_event_handler(connection, ^(xpc_object_t event) {        xpc_retain(event);        // Call Go function        HandleXPCEvent(event);    });}我是不是做错了什么?这是某种 go 错误还是如何修复?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 253 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信