为了简单起见,我在同一个目录中创建了两个名为main.go和main.c的"Hello“程序。
戈朗:
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}C:
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}这两个程序都可以编译和运行:

但是正如你所看到的,VSCode给了我一个错误,它说:
包.:C源文件在不使用cgo或SWIG: main.c时不被允许
根据this answer,我必须删除和重新安装 Go,并安装高于1.5的更新版本。因此,我运行了这个命令来查看它的安装位置:
$ which go
/usr/local/go/bin/go然后我删除了那个目录:
$ sudo rm -rf /usr/local/go现在,命令不再起作用了:
$ go version
zsh: command not found: go
$ which go
go not found为了确保,我还删除了go目录中的$HOME
$ sudo rm -rf $HOME/go我还检查了是否通过pacman安装了它,但是输出中没有go包:
$ pacman -Q | grep go
argon2 20190702-3
go-tools 2:1.14+3923+c00d67ef2-1
haskell-vector-algorithms 0.8.0.3-21
pango 1:1.44.7+11+g73b46b04-1
pangomm 2.42.1-2然后我下载并将go1.15.3.linux-amd64.tar.gz解压缩到/usr/local/中。
$ sudo tar -C /usr/local -xzf go1.15.3.linux-amd64.tar.gz现在我可以看到它已经安装了:
$ go version
go version go1.15.3 linux/amd64
$ which go
/usr/local/go/bin/go在$PATH文件中添加这个export命令时,export文件中也有这个目录:
export PATH=$PATH:/usr/local/go/bin现在我关闭VSCode并重新打开它,但是也存在相同的错误。
One answer suggests表示,$GOROOT变量必须设置为正确的目录,目前此变量为空。所以我将这个export添加到我的~/.zshrc文件中:
export GOROOT=/usr/local/go但错误仍然存在。我怎么才能解决这个问题?
发布于 2020-10-23 00:08:34
你需要
package main
import(
"fmt
)
import "C"
func main() {
...
}您需要将c函数名从main()更改为C文件中的其他内容,以避免编译时对它的多个定义。
https://stackoverflow.com/questions/64490345
复制相似问题