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

时间:2014-11-28 14:56:14

标签: c linux windows dll mingw

我在Linux上使用MinGW(特别是Ubuntu)来编译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就可以了......

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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