DLL:在 Linux for Windows 上使用 MinGW 编译 C 时无法识别的文件格式



我在Linux(特别是Ubuntu)上使用MinGW来编译Windows的C程序。我正在使用一个名为SFML的库,它是名为CSFML的绑定。我正在使用 -L 和 -l 来定位库,但是当我编译时出现此错误:

win32/dll/csfml-audio-2.dll: file not recognized: File format not recognised
我不知道

为什么。这是我用来编译的命令:

sudo i686-w64-mingw32-gcc -o wandering src/main.c src/constants.c src/Display/display.c **...some more c files in here...** src/Generation/perlinnoise.c $(pkg-config --libs --cflags glib-2.0) $(pkg-config --libs --cflags gee-1.0) -Iwin32/CSFML-2.1/include -Lwin32/dll -lcsfml-audio-

有谁知道为什么会这样?我可以在没有 SFML 的情况下编译 C 程序,但使用 MinGW 就可以了......

DLL 具有 PE32 可执行文件头。它不用于链接器。应改用导入库。此文件的扩展名为 LIB。

我听说有一些 gcc 编译器版本,而不是动态从 DLL 生成导入库。看起来您的版本没有。

从命令行似乎试图使用 sudo i686-w64-mingw32-gcc 64 位编译器并提供 32 位 DLL,即 win32/dll/csfml-audio-2.dll。 更改为 x64/dll/csfml-audio-2.dll。它应该可以正常工作。

最新更新