C.串() 仅返回第一个字符

我正在尝试使用c共享(.so)文件从Python调用Go函数。在我的python代码中,我调用的函数如下所示:


website = "https://draftss.com"

domain = "draftss.com"

website_ip = "23.xxx.xxx.xxx"


website_tech_finder_lib = cdll.LoadLibrary("website_tech_finder/builds/websiteTechFinder.so")

result_json_string: str = website_tech_finder_lib.FetchAllData(website, domain, website_ip)

在Go端,我正在根据这篇SO帖子将字符串转换为Go字符串(从共享库访问函数时内存不足):


func FetchAllData(w *C.char, d *C.char, dIP *C.char) *C.char {


    var website string = C.GoString(w)

    var domain string = C.GoString(d)

    var domainIP string = C.GoString(dIP)


    fmt.Println(website)

    fmt.Println(domain)

    fmt.Println(domainIP)

    

    .... // Rest of the code

}

网站域和 domainIP 只有我传递的字符串的第一个字符:


fmt.Println(website)  // -> h

fmt.Println(domain)   // -> d

fmt.Println(domainIP) // -> 2

我对Go有点陌生,所以我不确定我是否在这里做了一些愚蠢的事情。如何获取我传递的完整字符串?


沧海一幻觉
浏览 127回答 1
1回答

元芳怎么了

您需要将参数转换为 UTF8 字节。website = "https://draftss.com".encode('utf-8')domain = "draftss.com".encode('utf-8')website_ip = "23.xxx.xxx.xxx".encode('utf-8')lib = cdll.LoadLibrary("website_tech_finder/builds/websiteTechFinder.so")result_json_string: str = website_tech_finder_lib.FetchAllData(website, domain, website_ip)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go