Я создаю приложение, написанное на python.
В приложении мне нужна функция, предоставляемая языком go, поэтому я пытаюсь создать файл * .so, чтобы использовать его как локальныйlibrary.
Как мне собрать * .so с исходным кодом go-lang, содержащим struct-type.
Go версия: go версия go1.12.2 windows / amd64
python: Python 3.6.1 (v3.6.1: 69c0db5, 21 марта 2017 г., 18:41:36) [MSC v.1900 64 бит (AMD64)] на win32
До сих пор мне удавалось создать файл * .so с исходным кодом go-lang, просто имея простую функцию без какого-либо типа структуры,И это сработало, выполнив его через python-код.
Затем я добавил параметры структуры в код go, после этого попробовал тот же процесс сборки.Тем не менее, он никогда не работал, показывая некоторые сообщения, подобные этому.
# аргументы командной строки
. \ User_auth.go: 37: 16: Тип Go не поддерживается в экспорте: http.ResponseWriter
. \ user_auth.go: 37: 40: тип Go не поддерживается в экспорте: http.Request
. \ user_auth.go: 37: 16: тип Go не поддерживаетсяв экспорте: http.ResponseWriter
. \ user_auth.go: 37: 40: тип экспорта не поддерживается в экспорте: http.Request
Согласно здесь , cmd / cgo, кажется, не поддерживает это преобразование до 2017 года. Я не смог найти больше информации, чем указано выше.
・ Успешно (ok.go)
package main
import (
"C"
)
func main() {
}
//export adder
func adder(a, b int) int {
return a + b
}
・ Ошибка (wish_ok.go))
package main
import (
"fmt"
"net/http"
"C"
"google.golang.org/appengine"
"google.golang.org/appengine/user"
)
func main() {
// http.HandleFunc("/auth", welcome)
//
// appengine.Main()
}
func init() {
// log.Println("Loaded!!")
}
//export welcome
func welcome(w http.ResponseWriter, r *http.Request) {
ctx := appengine.NewContext(r)
u := user.Current(ctx)
if u == nil {
url, _ := user.LoginURL(ctx, "/")
fmt.Fprintf(w, `<a href="%s">Sign in or register</a>`, url)
return
}
url, _ := user.LogoutURL(ctx, "/")
fmt.Fprintf(w, `Welcome, %s! (<a href="%s">sign out</a>)`, u, url)
}
Я ожидаю, что код go-lang, как указано выше, может быть выполнен python.Или другой способ получения информации о пользователе в gcp (gae-py3.X) приветствуется.