C ++程序在Linux上交叉编译使用mingw在msys2中工作,但不能直接在windows

时间:2017-05-18 08:03:40

标签: c++ cross-compiling msys2 mxe

我有一个奇怪的问题。我有一个依赖于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);,因为我在中间丢失了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 我的计划。

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

Referential integrity constraint violation: "FK_APCC8LXK2XNUG8377FATVBN04: 
PUBLIC.USER_ROLE FOREIGN KEY(USER_ID) REFERENCES PUBLIC.USERS(ID) (40)"; 
SQL statement: delete from users where id=? and version=? [23503-176]

是否有人遇到同样的问题并且知道修复它的方法?

1 个答案:

答案 0 :(得分:0)

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

  • 在调用函数指针后,将调用移至ruby_setup()某处。
  • make clean
  • 然后重新运行完整的交叉编译程序。