[英]package .: C source files not allowed when not using cgo or SWIG: main.c
為簡單起見,我在同一目錄中創建了兩個“Hello World”程序,分別稱為main.go
和main.c
。
高朗:
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
C:
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}
兩個程序都可以編譯並運行:
但是正如你所看到的,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
為了確保,我還刪除了$HOME
的go
目錄:
$ 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.