首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当不使用cgo或SWIG: main.c时不允许包.:C源文件

当不使用cgo或SWIG: main.c时不允许包.:C源文件
EN

Stack Overflow用户
提问于 2020-10-22 20:48:46
回答 1查看 905关注 0票数 1

为了简单起见,我在同一个目录中创建了两个名为main.gomain.c的"Hello“程序。

戈朗:

代码语言:javascript
复制
package main

import "fmt"

func main() {
    fmt.Println("Hello World!")
}

C:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    printf("Hello World!\n");
    return 0;
}

这两个程序都可以编译和运行:

但是正如你所看到的,VSCode给了我一个错误,它说:

包.:C源文件在不使用cgo或SWIG: main.c时不被允许

根据this answer,我必须删除重新安装 Go,并安装高于1.5的更新版本。因此,我运行了这个命令来查看它的安装位置:

代码语言:javascript
复制
$ which go
/usr/local/go/bin/go

然后我删除了那个目录:

代码语言:javascript
复制
$ sudo rm -rf /usr/local/go

现在,命令不再起作用了:

代码语言:javascript
复制
$ go version
zsh: command not found: go
$ which go
go not found

为了确保,我还删除了go目录中的$HOME

代码语言:javascript
复制
$ sudo rm -rf $HOME/go

我还检查了是否通过pacman安装了它,但是输出中没有go包:

代码语言:javascript
复制
$ 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/中。

代码语言:javascript
复制
$ sudo tar -C /usr/local -xzf go1.15.3.linux-amd64.tar.gz

现在我可以看到它已经安装了:

代码语言:javascript
复制
$ go version
go version go1.15.3 linux/amd64
$ which go
/usr/local/go/bin/go

$PATH文件中添加这个export命令时,export文件中也有这个目录:

代码语言:javascript
复制
export PATH=$PATH:/usr/local/go/bin

现在我关闭VSCode并重新打开它,但是也存在相同的错误。

One answer suggests表示,$GOROOT变量必须设置为正确的目录,目前此变量为空。所以我将这个export添加到我的~/.zshrc文件中:

代码语言:javascript
复制
export GOROOT=/usr/local/go

但错误仍然存在。我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2020-10-23 00:08:34

你需要

代码语言:javascript
复制
package main
import(
    "fmt
)
import "C"
func main() {
...
}

您需要将c函数名从main()更改为C文件中的其他内容,以避免编译时对它的多个定义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64490345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档