g++ 无法识别 dll 的文件格式

g++ doesn't recognize the file format of a dll

我在 Windows,我正在使用 mingw-64 附带的 g++ 版本。我的计算机上有一个名为 lua51.dll 的文件。当我尝试 运行 以下命令时:

g++ -shared -fPIC -o stuff.dll -llua51 stuff.cpp

我收到以下错误:

C:/Program Files/LOVE/lua51.dll: file not recognized: File format not recognized
collect2.exe: error: ld returned 1 exit status
make: *** [main] Error 1

我该如何解决这个问题?如果需要更多信息,请告诉我;我是编译的初学者。

当您尝试在 运行 32 位版本的 g++ 甚至 gcc.[=19= 中包含 64 位库时,您会遇到这个问题]

我以为 mingw-64 附带的 g++.exe 版本会生成 64 位代码,但事实证明这不是真的;它仍然只生成 32 位代码。在我的例子中,lua51.dll 是 64 位的,这是一个问题,因为我使用的是生成 32 位代码的 g++ 版本。

相反,您需要使用 x86_64-w64-mingw32-g++.exe,它可以在与 g++.exe 相同的文件夹中找到。这是将生成 64 位代码的 g++ 版本。