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++
版本。
我在 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++
版本。