【问题标题】:Compile changes only after editing another class仅在编辑另一个类后编译更改
【发布时间】:2012-06-16 21:31:49
【问题描述】:

所以我有这个奇怪的问题 - 我将 sfml 与 c++ 一起使用,我想编辑一个游戏屏幕(我创建了一个屏幕类以由游戏的不同级别和屏幕派生)但奇怪的是当我更改类中的内容时(例如,如果我试图改变精灵的像素移动率),然后我编译并运行程序,我看到绝对没有任何变化,但如果我之后改变另一个类(不管哪个类,任何类都可以工作)而不是看到我创建的游戏画面的变化... 我真的不知道这里有什么问题,所以我寻求您的帮助

顺便说一句,如果重要的话,那就是类(没有标题,只有 .cpp)

#include "Screen.hpp"
#include "Sprite.hpp"
#include <iostream>

using namespace sf;

class GameScreen : public rce::Screen
{
private:
    rce::Sprite s;

public:
    GameScreen() : Screen()
    {
    }

    void Load()
    {
        s.SetImage("circle.png");
    }

    void Unload()
    {
    }

    void Update()
    {
        s.SetX(s.GetX()+1);
    }

    void Draw()
    {
        s.Draw();
    }
};

【问题讨论】:

  • 这可能很傻,但你确定程序已经完全编译了吗?例如,如果您正在编写自己的 Makefile,您确定您的依赖关系正确吗?
  • 我正在使用visual c++ express 2010 ...我相信程序已完全编译,尽管我担心这可能是问题所在。不过不确定:O
  • 这不应该是他们的问题,但无论哪种方式,尝试改变你的班级并进行全面重建,看看是否能解决问题。
  • 试过了,实际上已经……什么都没做:(
  • 尝试重新构建所有文件,同时确保删除“附加库目录”列表中每个文件夹中的所有.lib 文件(除非它们是外部库)。然后转到构建.exe 的文件夹(检查文件创建时间),然后直接运行该.exe 文件。

标签: c++ sfml


【解决方案1】:

如果您使用 C/C++ 处理多个文件,C/C++ 的编译器会编译每个 *.c 或 *cpp 文件并使其成为 *.o 或 *obj 文件,在某些 compilers.gcc 中使用 *.o 。然后链接器将它们链接在一起。当你重新编译一个特殊文件时,你应该编译它的依赖。

【讨论】:

    猜你喜欢
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    相关资源
    最近更新 更多