【问题标题】:SDL DevC++ Linker IssueSDL DevC++ 链接器问题
【发布时间】:2013-04-05 01:44:24
【问题描述】:

我启动了lazyfoo SDL 教程(http://lazyfoo.net/SDL_tutorials/lesson01/windows/devcpp/index.php),我完全按照所写的安装说明进行操作,但是当我编译它时 -->

#include "SDL/SDL.h"

int main( int argc, char* args[] )
{
   //Start SDL
   SDL_Init( SDL_INIT_EVERYTHING );

   //Quit SDL
   SDL_Quit();

   return 0;    
}

发生这种情况-->

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe 在搜索 -lSDLmain 时跳过不兼容的 C:/SDL-1.2.15/lib/libSDLmain.a

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe 在搜索 -lSDLmain 时跳过不兼容的 C:/SDL-1.2.15/lib\libSDLmain.a

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe 在搜索 -lSDLmain 时跳过不兼容的 C:/SDL-1.2.15/lib/libSDLmain.a

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe 找不到-lSDLmain

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe 搜索时跳过不兼容的 C:/SDL-1.2.15/lib/libSDL.dll.a -lSDL

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe 搜索时跳过不兼容的 C:/SDL-1.2.15/lib/libSDL.dll.a -lSDL

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe 找不到-lSDL

C:\SDL Tutorial Projects\collect2.exe [错误] ld 返回 1 退出状态

我有DevC++ 5.4.1,我正在尝试安装SDL-devel-1.2.15-mingw32.tar.gz

这跟我的问题有关系吗?

我已经尝试了所有方法,它只是说跳过不兼容 libSDLmain.alibSDL.dll.a

【问题讨论】:

  • 您可能混淆了 32 位和 64 位版本的库,或者可能是这样的:stackoverflow.com/questions/7925926/…
  • 我有 64 位 Windows,并且他们的网站上没有 64 位版本的 SDL 开发库,但是在说明中说如果您将 SDL.dll 放在 C:\Windows\SysWOW64 中就可以了。
  • 我不是 SDL 方面的专家,但我认为 sdl.dll 只有在它是 32 位版本的 dll 并且您正在构建 32 位版本的可执行文件时才应该转到 SysWOW64

标签: c++ sdl dev-c++


【解决方案1】:

c:\程序文件 (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe 搜索时跳过不兼容的 C:/SDL-1.2.15/lib/libSDLmain.a 对于 -lSDLmain

您可能有不兼容的二进制文件。为什么要使用 x64 编译器?尝试安装 MinGW 并使用原始 gcc 进行编译。

如果您尝试这样做,请将 MinGW/bin 添加到您的路径并运行 gcc 'filelocation' -lmingw32 -lSDLmain -lSDL

或者尝试使用 x86 版本的 Dev。此外,IIRC -lSDLmain 应位于 -lSDL 之前,在 Windows 上,您需要添加 -lmingw32 以使其链接并正常工作。

如果这一切都失败了,一个可靠的方法是获取相同的 MinGW 并使用 msys 自己编译 SDL.. 只需切换到目录并运行

./configure
mingw32-make

【讨论】:

    【解决方案2】:

    您应该使用 MinGW 安装 32 位 Dev-C++ 并使用此选项与 SDL 一起使用

    【讨论】:

      【解决方案3】:

      我认为这是因为您尝试使用 32 位二进制文​​件编译 64 位应用程序。您需要做的就是设置一个标志来将您的应用程序编译为 32 位应用程序,例如 gcc(或 g++)main.cpp -o -m32,或者,如果您使用的是 CMAKE add

      set(CMAKE_C_FLAGS -m32)
      set(CMAKE_CXX_FLAGS -m32)
      

      在开头。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-26
        • 1970-01-01
        • 1970-01-01
        • 2011-05-08
        • 2020-02-19
        相关资源
        最近更新 更多