为了账号安全,请及时绑定邮箱和手机立即绑定

如何本地导入非本地包报错

如何本地导入非本地包报错

Go
慕运维8079593 2023-06-12 16:55:24
我正在尝试使用命令在 Windows 7 64 位中生成一个 .aar 文件gomobile bind --target=android,它给了我标题错误。我一直在寻找,但找不到答案。我正在尝试使用该程序在 Android Studio 中制作一个应用程序,它的第一部分如下:package main (I changed it to "random" for the bind command to work - that's the thing to do, right?)import (    "github.com/elazarl/goproxy"    "text/template"    "net/http"    "regexp"    "bytes"    "log"    "net")错误如下:gomobile: go build -buildmode=c-shared -o=C:\Users\\[User name]\AppData\Local\Temp\gomobile-work-101707703\android\src\main\jniLibs\armeabi-v7a\libgojni.so gobind failed: exit status 1..\\[User name]\AppData\Local\Temp\gomobile-work-101707703\src\gobind\go_randommain.go:17:2: local import "." in non-local package我正在关注的指南之一是https://dzone.com/articles/gomobile-library-development-for-iosandroid并且我从那里开始做大部分事情。我从未听说过这种语言,所以我是初学者(如果这是一个愚蠢的问题,我很抱歉)。根据我的阅读,这可能是因为程序中有例如“.\greetings”(带有“.\”的东西与相对路径有关),所以我不知道为什么会这样. 有人可以帮忙吗?如果我需要提供更多数据,请告诉我,我会提供。提前致谢!编辑:我试图将“package random”更改为“package thing”,错误的最后部分将“random”更改为“thing”:..\\[User name]\AppData\Local\Temp\gomobile-work-101707703\src\gobind\go_thingmain.go:17:2: local import "." in non-local package我不应该尝试转换这个程序,因为它是以无法转换的方式编写的吗?或者是其他东西?如果它有任何帮助,我在 Windows 中的用户名有一个空格,但在 CMD 中它显示为未完成的名称和最后的 ~1,所以它至少在命令返回时没有空格。我不明白那些 17:2 的东西指向哪里。我知道这是一行和一列,但我不知道去哪里查找错误,因为我什至试图转到生成的文件,但我找不到它。当我复制创建的文件夹时,只有 4 或 5 个文件随附,没有文件夹,所以我看不到该文件中的错误来理解这一点......希望有人知道答案或可能的答案。编辑 2:现在我决定尝试在导入后删除所有代码,并且只在 .go 文件中包含代码中显示的内容,它给出了以下错误:gomobile: C:\Users\[User name]\go\bin\gobind.exe -lang=go,java -outdir=C:\Users\[User name\AppData\Local\Temp\gomobile-work-847973191 . failed: exit status 1no exported names in the package "."no exported names in the package "."no exported names in the package "."no exported names in the package "."而且我没有任何“。” 在文件中,所以我可能会想到“。” 指的是一些包,但我不知道,因为只有 4 个而不是 7 个是导入的。刚才我删除了文件中的所有内容,除了第一行,package random它给出了与上面相同的错误。有什么帮助吗?(如果我需要提供更多信息,请告诉我)我不明白是什么原因造成的,因为我在 Internet 上看到的唯一示例与文件中的相对导入有关。我的 GOPATH 错了吗?我有它的默认值%USERNAME%/go。这是一个可执行文件。我试图通过将包更改为随机来将其转换为库。我不知道它是否与此有关,甚至我是否需要更改其他任何内容才能将其用作图书馆。
查看完整描述

1 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

所以我终于明白了 EDIT 4 的问题是什么(我认为这是正确的做法,至少在我的情况下)......因为它可能与任何程序都无关并且它说了可能的错误必须做 clang.exe,我去寻找它,发现它在 ndk-bundle 文件夹中。那个文件夹我是从官网下载的,改名后放到我的Android SDK Tools文件夹下就可以用了。不知道为什么没有从Android Studio下载,反正我没有。因此,在知道该文件位于我从外部下载的文件夹中而不是从 Android Studio 内部下载后,我删除了所有内容并重新下载了 NDK Bundle,但这次是从 Android Studio(为了以防万一可能有用,我下载了所有其他东西当我们点击显示过时的包时会显示),它终于成功了!然后为了确定问题是我从 Android Studio 外部下载的,我再次使用了那个下载的版本,它给出了同样的 clang.exe 错误。之后,再次尝试使用从 Android Studio 下载的版本再次运行。所以这可能是一个错误或类似的问题,因为至少对我来说它只适用于 Android Studio NDK Bundle 版本,而不适用于从他们的网站下载的版本。这很奇怪,但至少它终于奏效了。因为至少对我来说,它只适用于 Android Studio NDK Bundle 版本,而不适用于从他们的网站下载的版本。这很奇怪,但至少它终于奏效了。因为至少对我来说,它只适用于 Android Studio NDK Bundle 版本,而不适用于从他们的网站下载的版本。这很奇怪,但至少它终于奏效了。

现在我只是不明白为什么我必须将所有我想转换的文件放在 GOPATH\src\[a folder] 中才能工作并且不给我非本地错误(顺便说一句,在我的情况下,我的 GOPATH 是 C:\Users\[User Name]\go,万一知道可能会有用)...两个程序(一个来自 GitHub,另一个来自带有教程的网站)必须放在一个像要转换的路径,不能在它之外转换。这很奇怪。我不知道它是否应该是那样的,但至少它在工作...... [编辑:这是因为我没有阅读关于如何执行 go 程序的文档......不再发生,因为现在我' 使用正确的命令执行。]

希望这可以帮助其他人遇到这个问题!


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信