I can not build an APK file from Go code with gocv library.I use gogio to get apk.
I have a project with following code:
package mainimport ("bytes""fmt""log""gocv.io/x/gocv")func getDataFromImage(img gocv.Mat) (result string, err error) { imgBytes, _ := gocv.IMEncode("img.png", img) result, err = readqr.Decode(bytes.NewReader(imgBytes.GetBytes())) if err != nil { log.Println("error:",err) return result, err } return result, err}func readQR() { deviceID := 0 webcam, err := gocv.VideoCaptureDevice(int(deviceID)) if err != nil { log.Printf("error opening video capture device: %v\n", deviceID) return } defer webcam.Close() window := gocv.NewWindow("QR Code Reader") defer window.Close() img := gocv.NewMat() defer img.Close() log.Printf("start reading camera device: %v\n", deviceID) for { if ok := webcam.Read(&img); !ok { log.Printf("cannot read device %d\n", deviceID) return } if img.Empty() { continue } result, err := getDataFromImage(img) if err != nil { log.Println(err) } if len(result) == 0 { log.Printf("No qrcode detected") } fmt.Printf("%s\n", result) window.IMShow(img) window.WaitKey(1) }}func main(){ go readQR() ch:=make(chan int) ch<-1}When I use gogio:
igor@IS2:~/go/src/QR_client$ gogio -target=android . I get the following output:
gogio: go build -ldflags=-w -s -X gioui.org/app.ID=localhost.client -X gioui.org/app/internal/log.appID=localhost.client -buildmode=c-shared -tags -o /tmp/gogio-13964897/jni/arm64-v8a/libgio.so . failed: # client/usr/local/go/pkg/tool/linux_amd64/link: running g++ failed: exit status 1/usr/bin/g++ -s -Wl,-z,relro -shared -Wl,-z,nodelete -Wl,-Bsymbolic -o a.out -rdynamic -Wl,--compress-debug-sections=zlib /tmp/go-link-1870526482/go.o /tmp/go-link-1870526482/000000.o /tmp/go-link-1870526482/000001.o /tmp/go-link-1870526482/000002.o /tmp/go-link-1870526482/000003.o /tmp/go-link-1870526482/000004.o /tmp/go-link-1870526482/000005.o /tmp/go-link-1870526482/000006.o /tmp/go-link-1870526482/000007.o /tmp/go-link-1870526482/000008.o /tmp/go-link-1870526482/000009.o /tmp/go-link-1870526482/000010.o /tmp/go-link-1870526482/000011.o /tmp/go-link-1870526482/000012.o /tmp/go-link-1870526482/000013.o /tmp/go-link-1870526482/000014.o /tmp/go-link-1870526482/000015.o /tmp/go-link-1870526482/000016.o /tmp/go-link-1870526482/000017.o /tmp/go-link-1870526482/000018.o /tmp/go-link-1870526482/000019.o /tmp/go-link-1870526482/000020.o /tmp/go-link-1870526482/000021.o /tmp/go-link-1870526482/000022.o /tmp/go-link-1870526482/000023.o /tmp/go-link-1870526482/000024.o /tmp/go-link-1870526482/000025.o /tmp/go-link-1870526482/000026.o /tmp/go-link-1870526482/000027.o /tmp/go-link-1870526482/000028.o /tmp/go-link-1870526482/000029.o /tmp/go-link-1870526482/000030.o /tmp/go-link-1870526482/000031.o /tmp/go-link-1870526482/000032.o /tmp/go-link-1870526482/000033.o /tmp/go-link-1870526482/000034.o /tmp/go-link-1870526482/000035.o /tmp/go-link-1870526482/000036.o /tmp/go-link-1870526482/000037.o /tmp/go-link-1870526482/000038.o /tmp/go-link-1870526482/000039.o /tmp/go-link-1870526482/000040.o /tmp/go-link-1870526482/000041.o /tmp/go-link-1870526482/000042.o /tmp/go-link-1870526482/000043.o /tmp/go-link-1870526482/000044.o /tmp/go-link-1870526482/000045.o /tmp/go-link-1870526482/000046.o /tmp/go-link-1870526482/000047.o /tmp/go-link-1870526482/000048.o /tmp/go-link-1870526482/000049.o /tmp/go-link-1870526482/000050.o /tmp/go-link-1870526482/000051.o /tmp/go-link-1870526482/000052.o /tmp/go-link-1870526482/000053.o /tmp/go-link-1870526482/000054.o /tmp/go-link-1870526482/000055.o /tmp/go-link-1870526482/000056.o /tmp/go-link-1870526482/000057.o /tmp/go-link-1870526482/000058.o /tmp/go-link-1870526482/000059.o /tmp/go-link-1870526482/000060.o /tmp/go-link-1870526482/000061.o /tmp/go-link-1870526482/000062.o /tmp/go-link-1870526482/000063.o /tmp/go-link-1870526482/000064.o /tmp/go-link-1870526482/000065.o /tmp/go-link-1870526482/000066.o /tmp/go-link-1870526482/000067.o /tmp/go-link-1870526482/000068.o -O2 -g -llog -landroid -O2 -g -ldl -O2 -g -llog -O2 -g -lEGL -O2 -g -L/usr/local/lib -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_mcc -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_signal -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_highgui -lopencv_datasets -lopencv_text -lopencv_plot -lopencv_videostab -lopencv_videoio -lopencv_wechat_qrcode -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_dnn -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core -O2 -g -O2 -g -ldl/usr/bin/ld: /tmp/go-link-1870526482/go.o: Relocations in generic ELF (EM: 183)/usr/bin/ld: /tmp/go-link-1870526482/go.o: Relocations in generic ELF (EM: 183)/usr/bin/ld: /tmp/go-link-1870526482/go.o: Relocations in generic ELF (EM: 183)/usr/bin/ld: /tmp/go-link-1870526482/go.o: Relocations in generic ELF (EM: 183)/usr/bin/ld: /tmp/go-link-1870526482/go.o: Relocations in generic ELF (EM: 183)/usr/bin/ld: /tmp/go-link-1870526482/go.o: Relocations in generic ELF (EM: 183)/usr/bin/ld: /tmp/go-link-1870526482/go.o: Relocations in generic ELF (EM: 183)/usr/bin/ld: /tmp/go-link-1870526482/go.o: Relocations in generic ELF (EM: 183)/usr/bin/ld: /tmp/go-link-1870526482/go.o: Relocations in generic ELF (EM: 183)/usr/bin/ld: /tmp/go-link-1870526482/go.o: Relocations in generic ELF (EM: 183)/usr/bin/ld: /tmp/go-link-1870526482/go.o: Relocations in generic ELF (EM: 183)/usr/bin/ld: /tmp/go-link-1870526482/go.o: error adding symbols: file in wrong formatcollect2: error: ld returned 1 exit statusI expect to get an APK file. What is wrong? Why do I get this error?
P.S. I figured out that this error appears because of gocv.io/x/gocv library. And I don't know how to replace this library, I need it in my project.