【问题标题】:SDL and cygwin and sublime text C languageSDL 和 cygwin 和 sublime text C 语言
【发布时间】:2014-07-06 13:32:13
【问题描述】:

我正在尝试将 SDL 与 C 语言 sublime text 和 cygwin 一起使用

基本上我下载了 SDL devel mingw32 tar 的东西并解压了

然后我将包含内容复制到 cygwin/usr/include 以及将解压缩文件中的 lib 复制到 cygwin lib

我也将 SDL.dll 移动到了我用 c 编写的文件所在的目录,并且我将它包含在 #include "SDL.h" 中

当我试图编译它时,我得到了这个错误

$ gcc -o sdl sdl.c
sdl.c:1:17: fatal error: SDL.h: No such file or directory
 #include <SDL.h>
                 ^
compilation terminated.

这也是我要编译的文件

#include "SDL.h"
#include <stdio.h>

int main(int argc, char *argv[]){

}

谁能帮助我在我的程序中使用 SDL?我不知道如何使它工作以及缺少什么

【问题讨论】:

  • 如果我使用的是 cygwin64 位也可能导致问题吗?

标签: c sdl


【解决方案1】:

#include "SDL.h" 行使编译器查找名为 SDL.h 的头文件。您复制的SDL.dll 文件包含SDL 库的编译代码,但只包含与它交互所需的一小部分信息。其余信息位于 SDL.h 头文件中,该文件应位于您下载的 SDL-devel-*-mingw32.tar 存档中名为 include 的文件夹中。

您还必须通过在调用gcc 时添加-lSDL 作为参数来将您的程序链接到SDL.dll 文件。我不完全确定 gcc 是否允许您直接链接到 DLL 文件,因此您可能还需要存档中 lib 文件夹中的 libSDL.dll.a 文件。

顺便说一句,Sublime Text 只是一个文本编辑器,应该对代码的编译方式几乎没有影响。

祝你好运!

【讨论】:

  • 这里有一个关于difference between a header file and a library的相关答案!
  • 我复制到的文件夹是cygwin64,而下载的是sdl win32,这有关系吗?这可能是导致问题的原因吗? 64 位 cygwin 和 32 位 SDL 冲突?因为我确实将 SDL 的解压缩文件夹中提到的文件复制到了 cygwin 中的各个包含点
  • 这真的取决于 cygwin 是否生成 64 位二进制文​​件。很可能是这样,所以是的,它可能会发生冲突。如果您坚持您的程序必须是 64 位的,那么您将不得不自己编译一个 64 位版本的 SDL。 (不过,我不确定 SDL 是否支持 64 位目标)
  • 我还没有真正在程序中做出任何与 64 位相关的规范,即使用 long long(如果这就是你的意思)我所做的只是尝试编译一个 main 方法并返回包含我上面显示的“SDL.h”
  • 所以基本上据我了解,编译器没有拾取包含文件或库文件,有没有办法知道是因为文件不在正确的位置,还是因为链接器问题?
【解决方案2】:

好的,我找到了解决办法

您需要通过下载源文件并 make & make install 来实际构建 cygwin 文件

这里是指南

http://www.noquarterarcade.com/using-cygwin-for-sdl-development

【讨论】:

    猜你喜欢
    • 2014-05-17
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    相关资源
    最近更新 更多