【问题标题】:Go program loads a DLL compiled from Go code errorGo 程序加载从 Go 代码错误编译的 DLL
【发布时间】:2022-08-16 10:04:16
【问题描述】:

Go 程序加载从 Go 代码编译的 DLL
我该怎么办 谢谢。
去版本 1.18
窗户 10
有时,调用操作后,第一次可以正常运行。再运行会报错,然后就一直报错

报错如下

fatal error: unexpected signal during runtime execution
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x67b21ff5]

goroutine 1 [running, locked to thread]:
runtime.throw({0x67bdb25b?, 0xc0000240c0?})
        C:/Program Files/Go/src/runtime/panic.go:1047 +0x65 fp=0xc00003b9c0 sp=0xc00003b990 pc=0x67b44085
runtime.sigpanic()
        C:/Program Files/Go/src/runtime/signal_windows.go:249 +0x213 fp=0xc00003ba08 sp=0xc00003b9c0 pc=0x67b572f3
runtime.heapBitsSetType(0xb0b245?, 0x300000002?, 0x100c000034000?, 0x1943b4f9628?)
        C:/Program Files/Go/src/runtime/mbitmap.go:921 +0x3d5 fp=0xc00003bb30 sp=0xc00003ba08 pc=0x67b21ff5       
runtime.mallocgc(0x10, 0x67bc4ba0, 0x1)
        C:/Program Files/Go/src/runtime/malloc.go:1050 +0x64d fp=0xc00003bba8 sp=0xc00003bb30 pc=0x67b1c58d       
runtime.newobject(0x14?)
        C:/Program Files/Go/src/runtime/malloc.go:1192 +0x27 fp=0xc00003bbd0 sp=0xc00003bba8 pc=0x67b1c927        
os/exec.Command({0x67bd43ec, 0x8}, {0x0, 0x0, 0x0?})
        C:/Program Files/Go/src/os/exec/exec.go:274 +0x38 fp=0xc00003bc28 sp=0xc00003bbd0 pc=0x67b9f6d8
main.main()
        D:/code/test_dll/main.go:68 +0x2c fp=0xc00003bc60 sp=0xc00003bc28 pc=0x67ba336c
main.RunHacking8(...)
        D:/code/test_dll/main.go:60
_cgoexp_b07154bc348b_RunHacking8(0x0?)
        _cgo_gotypes.go:39 +0x27 fp=0xc00003bc70 sp=0xc00003bc60 pc=0x67ba33c7
runtime.cgocallbackg1(0x67ba33a0, 0xc000026000?, 0x0)
        C:/Program Files/Go/src/runtime/cgocall.go:316 +0x2c2 fp=0xc00003bd40 sp=0xc00003bc70 pc=0x67b13f82
runtime.cgocallbackg(0xc000034000?, 0x300000002?, 0xc000034000?)
        C:/Program Files/Go/src/runtime/cgocall.go:235 +0x105 fp=0xc00003bdd0 sp=0xc00003bd40 pc=0x67b13bc5
runtime.cgocallbackg(0x67ba33a0, 0x6b639ffadf, 0x0)
        <autogenerated>:1 +0x36 fp=0xc00003bdf8 sp=0xc00003bdd0 pc=0x67b702d6
runtime: g 1: unexpected return pc for runtime.cgocallback called from 0xb542a0
stack: frame={sp:0xc00003bdf8, fp:0xc00003be20} stack=[0xc00003a000,0xc00003c000)

runtime.cgocallback(0xb02a8b, 0xb57e20, 0xbd4940)
        C:/Program Files/Go/src/runtime/asm_amd64.s:994 +0xd7 fp=0xc00003be20 sp=0xc00003bdf8 pc=0x67b6e097

  • func main() { dll := syscall.NewLazyDLL(\"recar.dll\") f := dll.NewProc(\"RunHacking8\") f.Call() }
  • 您不能在同一进程中加载​​ Go 运行时的多个实例。
  • @Recar 请告诉你 main.go 。

标签: dll cgo


【解决方案1】:

我发现了问题,因为我的 dll 调用了另一个无法再次调用的 dll

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    相关资源
    最近更新 更多