Голанг вызов Руби DLL - PullRequest
0 голосов
/ 05 июля 2018

Я хочу использовать golang для вызова dll Рубина, есть функция кода c:

long rb_num2int(VALUE);

и я использую syscall в golang для вызова такой функции:

type VALUE uint64

func rb_num2int(val VALUE) int32 {
    ret, _, _ := Rb_num2int.Call(
        uintptr(unsafe.Pointer(&val)),
    )
    return int32(ret)
}

наконец, когда я использую ruby ​​для вызова файла so golang, возникает ошибка:

Exception 0xc0000005 0x0 0x746e 0x6498cdd4
PC=0x6498cdd4
signal arrived during external code execution

syscall.Syscall(0x648af790, 0x1, 0xc0420600a8, 0x0, 0x0, 0x0, 0x0, 0x0)
        C:/Go/src/runtime/syscall_windows.go:171 +0xf9
syscall.(*Proc).Call(0xc04205a4a0, 0xc0420600b0, 0x1, 0x1, 0x10, 0x67823060, 0x1, 0xc0420600b0)
        C:/Go/src/syscall/dll_windows.go:146 +0xa4
syscall.(*LazyProc).Call(0xc042074270, 0xc0420600b0, 0x1, 0x1, 0xc04203de98, 0x67784ae3, 0xc042052058, 0x0)
        C:/Go/src/syscall/dll_windows.go:302 +0x66
main.rb_num2int(0x2cbdc78, 0x0)
        C:/Users/ABC/go/src/sketchup/main.go:57 +0x8e
main.add(0x2cbdc78, 0x3, 0x5)
        C:/Users/ABC/go/src/sketchup/main.go:81 +0x36
rax     0x746e
rbx     0xc0420600a8
rcx     0xc0420600a8
rdi     0xc0420600a8
rsi     0x99
rbp     0x62f170
rsp     0x62f140
r8      0x62f1c0
r9      0xc21
r10     0x0
r11     0x8101010101010100
r12     0x62f1c0
r13     0x0
r14     0x0
r15     0x100
rip     0x6498cdd4
rflags  0x10202
cs      0x33
fs      0x53
gs      0x2b

Любые предложения о том, что мне делать?

...