gpt4 book ai didi

dll - 使用 dll api 时出现意外故障地址 0x0

转载 作者:IT王子 更新时间:2023-10-29 01:42:35 25 4
gpt4 key购买 nike

我正在尝试在 go 语言中使用一些第三方 dll。却面临着巨大的困难。我更喜欢纯 go 实现,但这不是一个选择。

这是我的示例程序

import (
"fmt"
"github.com/andlabs/dl"
)

type GetObject func(string, string) int

func main() {
gro := new(GetObject)
d, err := dl.Open("/home/vaishnavi/lib/libVsphere.so", dl.Lazy)
if err!=nil{
panic(err)
}
fmt.Println("DLL Loaded::", d)

s, err := d.Symbol("GetSum")
if err != nil {
panic(err)
}

gro = (*GetObject)(s)

p := (*gro)("1","2")
fmt.Println("Got returned result::", p)
fmt.Println("Converted::", gro)
fmt.Println("Loaded at::", s)
if s == nil {
fmt.Println("Error loading from the dll")
}

}

在运行这个程序时出现以下错误

DLL Loaded:: 15028848
unexpected fault address 0x0
fatal error: fault
[signal 0xb code=0x80 addr=0x0 pc=0x401923]

goroutine 1 [running]:
runtime.gothrow(0x4dcef0, 0x5)
/usr/local/go/src/runtime/panic.go:503 +0x8e fp=0xc20805fda0 sp=0xc20805fd88
runtime.sigpanic()
/usr/local/go/src/runtime/sigpanic_unix.go:29 +0x265 fp=0xc20805fdf0 sp=0xc20805fda0
main.main()
/home/vaishnavi/ESXI_VHBS/src/main/main.go:25 +0x343 fp=0xc20805ff98 sp=0xc20805fdf0
runtime.main()
/usr/local/go/src/runtime/proc.go:63 +0xf3 fp=0xc20805ffe0 sp=0xc20805ff98
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20805ffe8 sp=0xc20805ffe0

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1
Error: process exited with code 2.

我们将不胜感激。

最佳答案

package documentation说:

Symbol looks up the given named symbol in the Module. Note that the value of Symbol can be nil, so checking symbol for nil will not indicate an error; checking err for nil is.

(强调已添加。)

来自package's source code Symbol 和 err 都可以为 nil 似乎只有两个原因。该符号要么真的是空的,要么它不存在于库中。确保该符号确实存在,并且您没有拼错名称。通常,您可以使用 readelf -Wsnm -g 列出 .so 文件中的所有符号。

关于dll - 使用 dll api 时出现意外故障地址 0x0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31543415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com