0

我有一个奇怪的问题。我有一个依赖于 Qt、Zlib 和 ruby​​ 的程序,我使用 mxe (x86_64-w64-mingw32.shared) 在 ubuntu 上交叉编译。

我使用的 ruby​​ 不包含在 mxe 包中,但已使用相同的工具链进行编译。

然后我有一个安装了 msys2 的 windows 10 64 位测试虚拟机。当我从 linux 上的 wine 或 windows 上的 msys2 运行程序时,它可以正常工作。但是当我直接从资源管理器启动它时,程序按预期启动但运行时失败ruby_setup()(我以前使用RUBY_INIT_STACK;过,但不是ruby_sysinit(&argc, &argv);因为我在程序中间迷路了。

我的程序提供的 dll 列表是(以 agathe_ 为前缀表示它们由我编码,ruby 初始化在 agathe_ruby.dll 中完成):

agathe_config.dll
agathe_models.dll
agathe_modules.dll
agathe_params.dll
agathe_ressources.dll
agathe_ruby.dll
agathe_utils.dll
agathe_views.dll
agathe_widgets.dll
libbz2.dll
libeay32.dll
libffi-6.dll
libfreetype-6.dll
libgcc_s_seh-1.dll
libgdbm-3.dll
libgdbm_compat-3.dll
libglib-2.0-0.dll
libgmp-10.dll
libharfbuzz-0.dll
libiconv-2.dll
libintl-8.dll
libjasper-1.dll
libjpeg-9.dll
liblcms2-2.dll
liblzma-5.dll
libmng-2.dll
libpcre16-0.dll
libpcre-1.dll
libpng16-16.dll
libstdc++-6.dll
libtiff-5.dll
libwebp-5.dll
libwebpdemux-1.dll
libyaml-0-2.dll
libzip-4.dll
qsvgicon.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Svg.dll
Qt5Widgets.dll
ssleay32.dll
x64-msvcrt-ruby230.dll
zlib1.dll

有没有人遇到过同样的问题并且知道解决方法?

4

1 回答 1

0

好的,我找到了解决这个问题的方法......我不知道具体如何,但程序是:

  • 将调用移动到ruby_setup()函数指针解析后未到达的位置。
  • make clean
  • 然后重新运行完整的交叉编译过程。
于 2017-05-18T14:22:14.383 回答