Ruby 可执行文件无法在 Win10 和 Win7 上启动
Ruby executable won't start on Win10 and Win7
我用 Tk 写了一个 ruby 应用程序,一切都很好,没有错误之类的。所以我用 Ocra 制作了一个 exe,一开始我遇到了一些问题,但后来我解决了,Ocra 制作了 exe 没有错误,而且当它让你在编译它之前尝试你的脚本时,没有问题。
但是当我双击 exe 时,什么也没有。我等了,什么也没有.. 运行 它作为管理员,什么也没有..
我也试着写了一个简单的脚本,就像一个 hello world 但总是同样的问题:
屏幕上或 cmd 中没有弹出错误,但是当我 运行 一个带有 TK
的 Ocra ruby 可执行文件时仍然没有任何反应
这是 ocra 输出:
G:\WinRuby\efdsk>ocra efdsk.rb --windows --no-autoload --debug
=== Loading script to check dependencies
=== Detected gem did_you_mean-1.2.0 (loaded, files)
=== 19 files, 38722 bytes
=== Detected gem ocra-1.3.10 (loaded, files)
=== 5 files, 210830 bytes
=== Detected gem tk-0.2.0 (loaded, files)
=== 419 files, 4623427 bytes
=== Including 59 encoding support files (3909616 bytes, use --no-enc to exclude)
=== Building efdsk-debug.exe
=== Enabling debug mode in executable
=== Adding user-supplied source files
=== Adding ruby executable rubyw.exe
=== Adding detected DLL C:/Ruby25-x64/bin/ruby_builtin_dlls/libgmp-10.dll
=== Adding detected DLL C:/Ruby25-x64/bin/ruby_builtin_dlls/libffi-6.dll
=== Adding detected DLL C:/Ruby25-x64/msys64/mingw64/bin/tcl86.dll
=== Adding detected DLL C:/Ruby25-x64/msys64/mingw64/bin/tk86.dll
=== Adding detected DLL C:/Ruby25-x64/bin/ruby_builtin_dlls/zlib1.dll
=== Adding detected DLL C:/Ruby25-x64/msys64/mingw64/lib/reg1.3/tclreg13.dll
=== Adding external manifest C:/Ruby25-
x64/bin/ruby_builtin_dlls/ruby_builtin_dlls.manifest
=== Adding library files
=== Compressing 16872997 bytes
LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03
=== Finished building efdsk-debug.exe (4029675 bytes)
这是我尝试启动 exe 文件时的输出
G:\WinRuby\efdsk>start efdsk.exe
G:\WinRuby\efdsk>
像这样的简单脚本也不会启动:
require 'tk'
require 'tkextlib/tile'
root = TkRoot.new()
button = Tk::Tile::TButton.new(root) {text "Hello World"}.grid
Tk.mainloop()
我的 ruby 版本:
ruby 2.5.1p57 (2018-03-29 revision 63029) [x64-mingw32]
我通过安装这个 ruby 版本解决了问题:
G:\WinRuby\efdsk>ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]
这是我用于 ocra 的命令:
ocra efdsk.rb --windows C:\Ruby23-x64\lib\tcltk\ --no-autoload --add-all-core
现在exe文件双击后运行正常
我用 Tk 写了一个 ruby 应用程序,一切都很好,没有错误之类的。所以我用 Ocra 制作了一个 exe,一开始我遇到了一些问题,但后来我解决了,Ocra 制作了 exe 没有错误,而且当它让你在编译它之前尝试你的脚本时,没有问题。
但是当我双击 exe 时,什么也没有。我等了,什么也没有.. 运行 它作为管理员,什么也没有..
我也试着写了一个简单的脚本,就像一个 hello world 但总是同样的问题:
屏幕上或 cmd 中没有弹出错误,但是当我 运行 一个带有 TK
的 Ocra ruby 可执行文件时仍然没有任何反应这是 ocra 输出:
G:\WinRuby\efdsk>ocra efdsk.rb --windows --no-autoload --debug
=== Loading script to check dependencies
=== Detected gem did_you_mean-1.2.0 (loaded, files)
=== 19 files, 38722 bytes
=== Detected gem ocra-1.3.10 (loaded, files)
=== 5 files, 210830 bytes
=== Detected gem tk-0.2.0 (loaded, files)
=== 419 files, 4623427 bytes
=== Including 59 encoding support files (3909616 bytes, use --no-enc to exclude)
=== Building efdsk-debug.exe
=== Enabling debug mode in executable
=== Adding user-supplied source files
=== Adding ruby executable rubyw.exe
=== Adding detected DLL C:/Ruby25-x64/bin/ruby_builtin_dlls/libgmp-10.dll
=== Adding detected DLL C:/Ruby25-x64/bin/ruby_builtin_dlls/libffi-6.dll
=== Adding detected DLL C:/Ruby25-x64/msys64/mingw64/bin/tcl86.dll
=== Adding detected DLL C:/Ruby25-x64/msys64/mingw64/bin/tk86.dll
=== Adding detected DLL C:/Ruby25-x64/bin/ruby_builtin_dlls/zlib1.dll
=== Adding detected DLL C:/Ruby25-x64/msys64/mingw64/lib/reg1.3/tclreg13.dll
=== Adding external manifest C:/Ruby25-
x64/bin/ruby_builtin_dlls/ruby_builtin_dlls.manifest
=== Adding library files
=== Compressing 16872997 bytes
LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03
=== Finished building efdsk-debug.exe (4029675 bytes)
这是我尝试启动 exe 文件时的输出
G:\WinRuby\efdsk>start efdsk.exe
G:\WinRuby\efdsk>
像这样的简单脚本也不会启动:
require 'tk'
require 'tkextlib/tile'
root = TkRoot.new()
button = Tk::Tile::TButton.new(root) {text "Hello World"}.grid
Tk.mainloop()
我的 ruby 版本:
ruby 2.5.1p57 (2018-03-29 revision 63029) [x64-mingw32]
我通过安装这个 ruby 版本解决了问题:
G:\WinRuby\efdsk>ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]
这是我用于 ocra 的命令:
ocra efdsk.rb --windows C:\Ruby23-x64\lib\tcltk\ --no-autoload --add-all-core
现在exe文件双击后运行正常