体系结构 x86_64 [MAC] 的 SDL2 未定义符号

如何解决体系结构 x86_64 [MAC] 的 SDL2 未定义符号

我正在关注 codergopher 的关于使用 SDL2 的 C++ 2D 平台游戏的教程。 我完全按照他在第三集中展示的方法来创建和渲染窗口。

但是当我“制作”游戏时它不起作用...

这是我的代码

main.cpp

#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <iostream>

#include "RenderWindow.hpp"

#define WINDOW_TITLE "SDL2"
#define SCREEN_WIDTH 720
#define SCREEN_HEIGHT 480

int main(int argc,char* args[]) {
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUdio | SDL_INIT_JOYSTICK) != 0)
    std::cout << "SDL_Init has Failed. [DEBUG] > " << SDL_GetError() << std::endl;

    if (!(IMG_Init(IMG_INIT_PNG)))
        std::cout << "IMG_Init has Failed. [DEBUG] > " << SDL_GetError() << std::endl;

    RenderWindow window(WINDOW_TITLE,SCREEN_WIDTH,SCREEN_HEIGHT);

    return 0;
}

渲染窗口.hpp

#pragma once
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>

class RenderWindow {
    public:
        RenderWindow(const char* p_title,int p_w,int p_h); // p_ says it's a parameter
    private:
        SDL_Window* window;
        SDL_Renderer* renderer;
};

renderwindow.cpp

#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <iostream>

#include "RenderWindow.hpp"

RenderWindow::RenderWindow(const char* p_title,int p_h) :window(NULL),renderer(NULL) {
    window = SDL_CreateWindow(p_title,SDL_WINDOWPOS_UNDEFINED,p_w,p_h,SDL_WINDOW_SHOWN);

    if (window == NULL)
        std::cout << "Window Failed to init. [DEBUG] > " << SDL_GetError() << std::endl;

    renderer = SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED);
}

生成文件

game:
    g++ src/main.cpp -o play -I include -L lib -l SDL2_image -l SDL2_mixer -l SDL2_ttf -l SDL2-2.0.0

所以在我的 sdl2 项目库中使用我的终端输入:“make game”,当我按回车键时,我的控制台返回了那个错误

Undefined symbols for architecture x86_64:
  "RenderWindow::RenderWindow(char const*,int,int)",referenced from:
      _main in main-92fb24.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command Failed with exit code 1 (use -v to see invocation)
make: *** [game] Error 1

有什么问题,我该如何解决?? 预先感谢您的回答!! 祝你有美好的一天!

解决方

问题出在我的 Makefile 中

game:
    g++ src/main.cpp src/renderwindow.cpp -o play -I include -L lib -l SDL2_image -l SDL2_mixer -l SDL2_ttf -l SDL2-2.0.0

添加scr/renderwindow.cpp

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?