我正在嘗試使用c共享(.so)文件從Python調(diào)用Go函數(shù)。在我的python代碼中,我調(diào)用的函數(shù)如下所示: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端,我正在根據(jù)這篇SO帖子將字符串轉(zhuǎn)換為Go字符串(從共享庫(kù)訪問函數(shù)時(shí)內(nèi)存不足):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}網(wǎng)站域和 domainIP 只有我傳遞的字符串的第一個(gè)字符:fmt.Println(website) // -> hfmt.Println(domain) // -> dfmt.Println(domainIP) // -> 2我對(duì)Go有點(diǎn)陌生,所以我不確定我是否在這里做了一些愚蠢的事情。如何獲取我傳遞的完整字符串?
1 回答

元芳怎么了
TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
您需要將參數(shù)轉(zhuǎn)換為 UTF8 字節(jié)。
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)
- 1 回答
- 0 關(guān)注
- 122 瀏覽
添加回答
舉報(bào)
0/150
提交
取消