Linux mingw32 sfml交叉编译为windows - 缺少dll文件

blu*_*zcz 7 c++ command-line mingw sfml

我正在以下列方式编译我的c ++项目:

/usr/bin/i686-w64-mingw32-g++ -g -std=c++0x -Wall -I /home/bluszcz/dev/win64/SFML-2.1/include -L /home/bluszcz/dev/win64/SFML-2.1/lib -static-libgcc -static-libstdc++ -static -O4 -c src/game.cpp -o src/game.a -lsfml-graphics -lsfml-window -lsfml-system -lsfml-audio
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行我的exe文件时,我得到关于丢失dll文件的错误:

bluszcz@zendo ~/dev/win32/builds/magicwizard $ wine mw.exe 
err:module:import_dll Library libgcc_s_dw2-1.dll (which is needed by L"Z:\\home\\bluszcz\\dev\\win32\\builds\\magicwizard\\sfml-system-2.dll") not found
err:module:import_dll Library libgcc_s_sjlj-1.dll (which is needed by L"Z:\\home\\bluszcz\\dev\\win32\\builds\\magicwizard\\libstdc++-6.dll") not found
err:module:import_dll Library libwinpthread-1.dll (which is needed by L"Z:\\home\\bluszcz\\dev\\win32\\builds\\magicwizard\\libstdc++-6.dll") not found
err:module:import_dll Library libstdc++-6.dll (which is needed by L"Z:\\home\\bluszcz\\dev\\win32\\builds\\magicwizard\\sfml-system-2.dll") not found
err:module:import_dll Library sfml-system-2.dll (which is needed by L"Z:\\home\\bluszcz\\dev\\win32\\builds\\magicwizard\\sfml-audio-2.dll") not found
err:module:import_dll Library libgcc_s_dw2-1.dll (which is needed by L"Z:\\home\\bluszcz\\dev\\win32\\builds\\magicwizard\\sfml-audio-2.dll") not found
err:module:import_dll Library libgcc_s_sjlj-1.dll (which is needed by L"Z:\\home\\bluszcz\\dev\\win32\\builds\\magicwizard\\libstdc++-6.dll") not found
err:module:import_dll Library libwinpthread-1.dll (which is needed by L"Z:\\home\\bluszcz\\dev\\win32\\builds\\magicwizard\\libstdc++-6.dll") not found
err:module:import_dll Library libstdc++-6.dll (which is needed by L"Z:\\home\\bluszcz\\dev\\win32\\builds\\magicwizard\\sfml-audio-2.dll") not found
Run Code Online (Sandbox Code Playgroud)

但是1,我已经使用静态选项编译- 所以为什么它要求libgcc_s_dw2-1.dll

但是2,我在那里复制了一些文件,应用程序仍然没有看到它们.

bluszcz@zendo ~/dev/win32/builds/magicwizard $ ls *dll
libsndfile-1.dll  sfml-audio-2.dll     sfml-graphics-d-2.dll  sfml-system-2.dll    sfml-window-d-2.dll
libstdc++-6.dll   sfml-audio-d-2.dll   sfml-network-2.dll     sfml-system-d-2.dll
openal32.dll      sfml-graphics-2.dll  sfml-network-d-2.dll   sfml-window-2.dll
bluszcz@zendo ~/dev/win32/builds/magicwizard $
Run Code Online (Sandbox Code Playgroud)

有些文件,比如libgcc_s_dw2-1.dll根本不存在于我的文件系统中......

我有三个问题:

  • 为什么我的应用程序看不到丢失的文件?
  • 如何用mingw32以静态方式编译?
  • 如何获取丢失的文件?

我使用这个版本的sfml库来编译它:http://www.sfml-dev.org/download/sfml/2.1/SFML-2.1-windows-gcc-4.7-mingw-32bits.zip

Flo*_*oFu 0

只回答三个问题中的最后一个:

关于标准库,我可以从 mingw 文件夹中复制它们:

cp /usr/lib/gcc/i686-w64-mingw32/5.3-win32/libstdc++-6.dll ./
Run Code Online (Sandbox Code Playgroud)

但是,当我根据我的构建从错误的目录复制时(例如/usr/lib/gcc/x86_64-w64-mingw32/5.3-posix/libstdc++-6.dll),当文件具有确切的内容时,我仍然遇到相同的错误同名在这里。