簡體   English   中英

package .: 不使用 cgo 或 SWIG 時不允許使用 C 源文件:main.c

[英]package .: C source files not allowed when not using cgo or SWIG: main.c

為簡單起見,我在同一目錄中創建了兩個“Hello World”程序,分別稱為main.gomain.c

高朗:

package main

import "fmt"

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

C:

#include <stdio.h>

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

兩個程序都可以編譯並運行:

Golang 和 C 中的你好世界

但是正如你所看到的,VSCode 給了我一個錯誤,上面寫着:

package .: 不使用 cgo 或 SWIG 時不允許使用 C 源文件:main.c

根據這個答案,我必須刪除重新安裝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

為了確保,我還刪除了$HOMEgo目錄:

$ 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也有這個目​​錄,因為我在~/.zshrc文件中添加了這個export命令:

export PATH=$PATH:/usr/local/go/bin

現在我關閉 VSCode 並重新打開它,但還是出現了同樣的錯誤。

一個答案表明$GOROOT變量必須設置到正確的目錄,目前這個變量對我來說是空的。 所以我在我的~/.zshrc文件中添加了這個export

export GOROOT=/usr/local/go

但是錯誤仍然存​​在。 我怎樣才能解決這個問題?

你需要

package main
import(
    "fmt
)
import "C"
func main() {
...
}

並且您需要將 c 函數名稱從main()更改為C文件中的其他名稱,以避免在編譯時對其進行多次定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM