I am cross-compiling an SFML application from a Linux host to a Windows guest. I downloaded the SJLJ 64-bit version of SFML and compiled/linked with x86_64-w64-mingw32-g++ and the -static
, -static-libgcc
, and -static-libstdc++
options. I still needed to copy the dll's from the SFML bin directory to my own, so I did. The application now successfully compiles and links for either Linux or Windows, depending on which makefile I specify.
However, running the Windows version (via Wine) results in a lot of errors: I am missing libgcc_s_seh_64-1.dll, libstdc++_64-6.dll, and strangely, both sfml-system-2.dll and sfml-window-2.dll, which are right next to the application. Why are existing dll's not imported? Why is SEH gcc needed by sfml-system-2.dll, which is ostensibly SJLJ, and why is sfml-system-2.dll then listed as missing if it caused that previous error? Or is the error the reason it is considered 'missing'? Sorry if this is cryptic, I'll clarify what I can.
I was following this article (http://chienloco.com/wp/cross-compile-games-for-windows-on-linux-with-mingw/), however I don't have anything called i586-mingw32msvc-g++
, so I can't follow it perfectly. Ideally I'd like to cross-compile everything from Linux and just worry about testing on guests without setting them up as development environments.
--Edit - there is no GCC SJLJ, so I'm going to try with the GCC SEH version next. I'll update with the results. -- That's a negative, same results.