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

标签 c linux windows dll mingw

我在 Linux(特别是 Ubuntu)上使用 MinGW 为 Windows 编译 C 程序。我正在使用一个名为 SFML 的库,它的绑定(bind)名为 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 生成导入库。看起来你的版本没有。

关于c - DLL:在 Linux for Windows 上使用 MinGW 编译 C 时无法识别文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27191258/

相关文章:

linux - nginx 和站点上的多个网站可用

java - 在ubuntu中实例化JAVA_HOME的各种方式有什么区别

c++ - 在 C++ 中存储和操作大量数据的想法

c - 从 C 中的字符串开头删除 char 的成本较低的方法是什么?

c - 如何使用 openmp 产生一次线程

c++ - Media Foundation 使用 PROPVARIANT 结构设置视频捕获帧率

windows - 无法在 cmd、Powershell 或 Vscode 中创建或更新文件。但我可以通过 Sublime、git bash 和文件资源管理器

c - 从本地网页发送数据到本地运行的C程序

c - 从 C 中的 float 转换整数的不一致舍入

.net - 启动 Windows 应用程序时错误代码 0xc0000135(或 -1073741515 退出代码)意味着什么?