codeskyblue / gobuild

not maintained, moved to https://github.com/gobuild/gobuild
GNU General Public License v2.0
200 stars 18 forks source link

termbox本地跨平台编译正常,但是使用gobuild编译的windows版异常 #32

Closed wangwenbin closed 10 years ago

wangwenbin commented 10 years ago

我自己做了个小程序,使用termbox-go作为一个组件。我在自己的ubuntu上跨平台编译的exe可以正常运行,但是使用gobuild编译下载的文件不能正常运行,会抛出异常。 因此我觉得可能是[gobuild]或者平台的问题,其中有可能是平台的termbox版本不够新的原因,纯瞎猜测。

由于windows下面复制不了终端输出,我暂不提供全部的异常内容了,如果需要我再补上。 termbox-go没有使用cgo,也没有使用os/user。当然我也没有使用他们。

这个是下载文件的地址,选的是windows 。 http://gobuild.io/download/github.com/wangwenbin/2048-go linux的正常工作,osx的没有测试。 出错会在游戏2048失败或者成功的时候。我不知道为什么,可能也就是输出“Win”或者“Lose”的时候。

这个bug也可能是我的代码的原因,但是目前我还没有找到问题。我如果找到更简单重现bug的代码,我会补上。

codeskyblue commented 10 years ago

osx上正常我试了,但是我没有windows lol

在 2014年5月15日,21:28,wangwenbin notifications@github.com 写道:

我自己做了个小程序,使用termbox-go作为一个组件。我在自己的ubuntu上跨平台编译的exe可以正常运行,但是使用gobuild编译下载的文件不能正常运行,会抛出异常。 因此我觉得可能是[gobuild]或者平台的问题,其中有可能是平台的termbox版本不够新的原因,纯瞎猜测。

由于windows下面复制不了终端输出,我暂不提供全部的异常内容了,如果需要我再补上。 termbox-go没有使用cgo,也没有使用os/user。当然我也没有使用他们。

这个是下载文件的地址,选的是windows 。 http://gobuild.io/download/github.com/wangwenbin/2048-go linux的正常工作,osx的没有测试。 出错会在游戏2048失败或者成功的时候。我不知道为什么,可能也就是输出“Win”或者“Lose”的时候。

这个bug也可能是我的代码的原因,但是目前我还没有找到问题。我如果找到更简单重现bug的代码,我会补上。

— Reply to this email directly or view it on GitHub.

codeskyblue commented 10 years ago

借了其他人的电脑测试了下,结束的时候windows上直接退出了

wangwenbin commented 10 years ago

@codeskyblue 恩,确实是这样的。 先打开cmd,然后cd到对应目录下用命令行启动,在崩溃的时候能看到异常输出。 我在ubuntu下面跨平台编译的exe是正常的,没有异常。

codeskyblue commented 10 years ago

好奇怪, 程序里可以加下版本, 看看编译出来是不是最新版。(理论上就是最新版)。 平台用的是 go1.2.1. 你用的那个go

wangwenbin commented 10 years ago

我在ubuntu下面编译的,$go version打印出来的是: go version go1.2.1 linux/amd64 我不知道怎么在程序里面加版本,我用Google找了一下但是没有找到正确的方法,这个得请教你一下了。

wangwenbin commented 10 years ago

平台下载的版本在wineconsle里面运行也是会崩溃的,如果你那里有wine的话,就不用找windows的电脑了。

wangwenbin commented 10 years ago

很抱歉,我发现这个bug是我自己的代码的问题。 因为termbox在windows和linux下面表现不一样,我使用termbox.SetCell参数传递不够严谨,在linux下面没有问题,但是在windows下面有panic。 我使用这样的代码导致了该bug。 termbox.SetCell(0, 0, ‘a’, 100, 222)//100和222是自己随便写的,索引一个颜色,在linux下面没有发现问题,但是在windows下面会导致panic 改为: termbox.SetCell(0, 0, 'a', termbox.ColorRed, termbox.ColorBlack) 就不会出现这个bug了。 我在本地修复了代码,由于粗心提交到github上失败也没有注意。 给 @codeskyblue 带来麻烦我觉得十分的愧疚。谢谢你的热心帮助!

codeskyblue commented 10 years ago

不客气