首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux mingw32 sfml交叉编译缺少windows的dll文件。

Linux mingw32 sfml交叉编译缺少windows的dll文件。
EN

Stack Overflow用户
提问于 2014-06-20 17:07:23
回答 4查看 4.6K关注 0票数 8

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

代码语言:javascript
复制
/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

但是,当我试图运行我的exe文件时,我会收到一个关于缺少DLL文件的错误:

代码语言:javascript
复制
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

我使用静态选项进行编译--那么为什么它要求使用libgcc_s_dw2-1.dll?

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

代码语言:javascript
复制
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 $

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

概括地说:

  1. 为什么我的应用程序看不到丢失的文件?
  2. 如何用mingw32进行静态编译?
  3. 怎样才能拿到丢失的文件?

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

EN

回答 4

Stack Overflow用户

发布于 2020-12-16 14:54:12

缺少的dll可以简单地添加到您的WINEPATH中,然后再用added运行程序,即

代码语言:javascript
复制
export WINEPATH="/usr/x86_64-w64-mingw32/lib;/usr/lib/gcc/x86_64-w64-mingw32/7.3-posix"

注意,根据所使用的混合版本,您的路径可能略有不同。

票数 1
EN

Stack Overflow用户

发布于 2017-08-05 12:18:58

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

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

代码语言:javascript
复制
cp /usr/lib/gcc/i686-w64-mingw32/5.3-win32/libstdc++-6.dll ./

但是,当我根据构建从错误的目录复制时(例如,/usr/lib/gcc/x86_64-w64-mingw32/5.3-posix/libstdc++-6.dll) ),当文件的名称完全相同时,我仍然有相同的错误。

票数 0
EN

Stack Overflow用户

发布于 2017-09-30 22:04:34

安装mingw64-gccmingw64-gcc-g++后的Fedora 26

代码语言:javascript
复制
[leo@pc]$ locate libgcc_s_seh-1.dll
/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgcc_s_seh-1.dll
[leo@pc]$ locate libstdc++-6.dll
/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libstdc++-6.dll
[leo@pc]$ 

如果我复制dll并使用生成的a.out.exe运行葡萄酒,它就能工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24332343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档