SetEvent 状态从 golang 到 c (cgo)

SetEvent state from golang to c (cgo)

提问人:Frnk Wdl 提问时间:7/24/2020 更新时间:2/10/2023 访问量:292

问:

我编写了DLL来处理我在golang中的VSCAN通信。我现在面临着一个非常棘手的问题。有没有办法将状态从 cgo 信号到 c/cpp 程序?

我正在使用一个大型 CPP 项目,它在其中调用外部 golang DLL(使用 GCC 编译)。程序传递句柄到事件:

    // this is a function from DLL (written in go). I want to pass the event handler there.
    VSCAN_STATUS VSCAN_SetRcvEvent(VSCAN_HANDLE Handle, HANDLE Event);

    // Calling it from c:
    sg_hEventRecv = CreateEvent(nullptr, FALSE, FALSE, nullptr);
    VSCAN_SetRcvEvent(1, sg_hEventRecv)

我将传递的 HANDLER 存储在 go dll 中:

package test

import "C"

var event C.HANDLE
func signalState(){
C.SetEvent(event) 
}

//export VSCAN_SetRcvEvent
func VSCAN_SetRcvEvent(Handle VSCAN_HANDLE, Event C.HANDLE) int {
    event = Event
    return 0
}

每次我想从 go 发出状态信号时,它都会返回错误代码 6(无效的处理程序)。

Go 事件 DLL CGO

评论


答: 暂无答案