gpt4 book ai didi

c++ - SDL_ttf 找不到 "SDL.h",但 main.cpp 可以

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:55:07 33 4
gpt4 key购买 nike

我正在编写一个 make 文件来编译一个非常简单的 SDL2 程序。

到目前为止它编译 SDL2 很好,现在我正在编译扩展框架 SDL2_image 和 SDL_ttf。

似乎 MAKE 正确地找到了 SDL_ttf.h,但是 SDL_ttf.h 找不到“SDL2/SDL.h”。

这里是错误:

In file included from main.cpp:3:
/Library/Frameworks/SDL2_ttf.framework/Headers/SDL_ttf.h:30:10: fatal error:
'SDL2/SDL.h' file not found
#include <SDL2/SDL.h>
^
1 error generated.
make: *** [main.o] Error 1

请注意,当我像这样包含 SDL2 时:

#include <SDL2/SDL.h>

我什至无法编译一个基本程序(没有扩展的 SDL2)。我通过将其更改为此来使其工作:

#include "SDL.h"

(我还听说后一种语法更适合可移植性?)

有什么想法吗?

我在 OS X Mavericks 上这样做

这是我的文件: main.cpp

#include <iostream>
#include "SDL.h"
#include "SDL_ttf.h"
#include "SDL_image.h"

int main(int argc, char * arg[])
{
if(SDL_Init(SDL_INIT_EVERYTHING) != 0)
{
std::cout << "ERROR" <<std::endl;

return -1;
}

SDL_Window * window = SDL_CreateWindow("Name", SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
640,
480,
SDL_WINDOW_OPENGL);
if (TTF_Init() == -1)
{
sdl::cout << "SDL_ttf failed" << std::endl;
}

SDL_Surface* tempSurface = IMG_Load("test.png");

if (tempSurface == nullptr)
{
std::cout << "failed to load test.png" << std::endl;
}

SDL_FreeSurface(tempSurface);

SDL_Delay(5999);

SDL_DestroyWindow(window);

SDL_Quit();

return 0;

生成文件

CXX = clang++
SDL = -framework SDL2 -framework SDL2_ttf -framework SDL2_image

CXXFLAGS = -Wall -c -std=c++11 -I /Library/Frameworks/SDL2.framework/Headers -I /Library/Frameworks/SDL2_ttf.framework/Headers -I /Library/Frameworks/SDL2_image.framework/Header

LDFLAGS = $(SDL) -F /Library/Frameworks
EXE = test

all: $(EXE)

$(EXE): main.o
$(CXX) $(LDFLAGS) $< -o $@
main.o: main.cpp
$(CXX) $(CXXFLAGS) $< -o $@

clean:
rm *.o && rm $(EXE)

编辑:

我已按照 DMG 文件中的说明将 SDL2 和 SDL2_ttf 安装到/Library/Frameworks 文件夹中。

最佳答案

我相信您需要 SDL2_ttf 才能使用 SDL2。

SDL_ttf (2.0.11) 需要 SDL (1.2)

和 SDL2_ttf (2.0.12) 需要 SDL2

关于c++ - SDL_ttf 找不到 "SDL.h",但 main.cpp 可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20847668/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com