我使用2D游戏库在Go中编写了一个非常简单的程序。
package main
import (
"github.com/hajimehoshi/ebiten"
"github.com/hajimehoshi/ebiten/ebitenutil"
)
const screenWidth, screenHeight = 320, 240
func update(screen *ebiten.Image) error {
ebitenutil.DebugPrint(screen, "Game test")
return nil;
}
func main() {
if err := ebiten.Run(update, screenWidth, screenHeight, 2, "Test"); err != nil {
panic(err)
}
}
然而,这依赖于GCC进行编译。运行时,我提示此消息:
# github.com/go-gl/glfw/v3.2/glfw
cc1.exe: sorry, unimplemented: 64-bit mode not compiled in
# github.com/go-gl/gl/v2.1/gl
cc1.exe: sorry, unimplemented: 64-bit mode not compiled in
我尝试下载MinGW-w64来解决问题,但它没有成功。
我将如何解决这个问题?
答案 0 :(得分:2)
所以你的C编译器不支持64位编译。解决此问题的一种方法是构建32位模式。默认情况下,Go会尝试构建您所在的系统体系结构,但您可以通过在构建之前设置环境变量GOARCH=386
来修改该行为。在Windows上,您可以在cmd中输入:
set GOARCH=386
go build
您可以使用此内容创建一个简单的.bat
批处理脚本,并在您想要构建时运行该脚本。
请注意,64位系统可以正常运行32位程序。这也是一种很好的方法,可以确保当您将.exe
提供给其他人时,它将在他们的系统上运行(不考虑其他依赖关系)。
如果您想升级C编译器而不是构建64位应用程序,请参阅this SO thread,这可能会有所帮助。