3

学校のサーバーからダウンロードしたプログラムを Mac でオフラインで実行しようとしています。チュートリアルに従ってGCCを更新しようとしましたが、与えられたコマンドを使用していても、何らかの理由でチュートリアルが機能しませんでした。

コンパイルすると..それが見つからないというエラーが表示されます..わかりません。Xcode を更新しました..たくさんのチュートリアルに従いました..それでも実行できません!

random が見つからないと言って、致命的なエラーが発生するのはなぜですか?

ありがとう

エラー:

DungeonLevel.h:6:10: fatal error: 'random' file not found

「これはコーディング サイトなので、ヘッダー ファイルをインクルードするのを忘れている可能性があるため、コードを提供する必要があります...」

#ifndef _DungeonLevel_included_
#define _DungeonLevel_included_

#include "Tile.h"
#include <vector>
#include <random>

class Player;

class DungeonLevel {
public:
    DungeonLevel(int iWidth, int iHeight, std::mt19937 & randomGen);
    ~DungeonLevel(void);

    void dump();
    char at(int x, int y);

    Creature * removeCreature(Creature * creatureToRemove);

    void moveCreature(Creature * creatureToMove, char dir);
    void placeInGame(Creature * creatureToPlace, std::mt19937 & randomGen);
    void placeInGame(Creature & creatureToPlace, std::mt19937 & randomGen);
    Tile & returnTile(int x,int y);
    int getWidth();
    int getHeight();

private:
    std::vector<std::vector<Tile>> m_vvTiles; //Tile was char

};

#endif

これが私のメイクファイルです:

OBJECTS = Ammunition.o Armor.o Consumable.o Creature.o Entity.o Gold.o Item.o parser.o Potion.o Scroll.o Weapon.o XMLSerializable.o CreatureFactory.o DungeonLevel.o Player.o Tile.o ItemFactory.o
HEADERS = Ammunition.h Armor.h Consumable.h Creature.h Entity.h Gold.h Item.h parser.h Potion.h Scroll.h Weapon.h XMLSerializable.h CreatureFactory.h DungeonLevel.h Player.h Tile.h ItemFactory.h

all: Jhack

%.o: %.cpp $(HEADERS)
    clang++ -c $< -o $@ -std=c++11 -stdlib=libc++

Jhack: $(OBJECTS) main.o
    clang++ -o Jhack $^ -stdlib=libc++

clean:
    rm -f *.o Jhack

run: Jhack
    ./Jhack
4

1 に答える 1

10

Apple の gcc は本当に時代遅れです。gcc と libstdc++ の代わりに、clang と libc++ を使用してビルドしてみてください。コンパイル フラグ: -std=c++11 -stdlib=libc++、リンク フラグ: -stdlib=libc++。g++ の代わりに clang++ を使用します。

編集:これを機能させるには、最新のコマンドラインツールをインストールする必要があることに注意してください。
XCode を開きます。「Xcode」 -> 「設定...」 -> 「ダウンロード」タブに移動します。「コマンド ライン ツール」を選択してインストールします。インストールされている場合は、[今すぐ確認してインストール] ボタンをクリックして更新を確認します。
その後clang++ --version、ターミナルに入力すると、次のように表示されます。

Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.3.0
Thread model: posix

編集 2 : それでも問題が解決せず、古いバージョンのコンパイラが残っている場合。xcrun clang++メイクファイルの代わりに使用してみてくださいclang++。それはxcodeツールチェーンを使用します。

于 2013-04-26T05:58:46.687 に答える