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

时间:2018-10-07 09:51:42

标签: dll g++ mingw-w64

我在Windows上,并且正在使用g++随附的mingw-64版本。我的计算机上有一个名为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

我该如何解决?请让我知道是否需要更多信息;我是汇编的完整初学者。

1 个答案:

答案 0 :(得分:0)

当运行g++甚至gcc的32位版本时尝试包含64位库时,会遇到此问题。

我认为g++.exe附带的mingw-64版本会产生64位代码,但事实证明这是不正确的。它仍然只产生32位代码。就我而言,lua51.dll是64位的,这是一个问题,因为我使用的是g++的版本会生成32位代码。

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