jsonCpp plante

parce que oui, je l'ai pas installé mais mis direct dans la source de mon projet xP

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Hey !!

Pour un remake d'un projet (de moi même, donc en fait c'est juste une reprog complète), j'ai besoin de json cpp pour lire des fichiers json contenant mes Map.

J'ai téléchargé la dernière version, mis tout ca dans "mon projet/json" et j'essaye de l'importer et … bim badaboum ca plantouille à cause d'une multiple definition. Je suppose que c'est parce que j'aurais du mettre un ifndef... define... include... endif, mais normalement c'est la lib qui gère ça, et je crois bien en avoir vu dans la source (peut etre que je me plante, mes idées sont pas claires ce matin).

Donc normalement c'est pas un pb de double include qui fait une double définition

Niveau technique, j'ai pas installé json cpp comme c'était dit dans la doc … :-° parce que un peu flemme quand même. M'enfin. Le code de json cpp est donc "en brute" dans le projet, et je pense qu'il aime pas (ou que je suis juste un boulet en fait)

L'erreur complète :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
||=== Build: Debug in ENDIVE (compiler: GNU GCC Compiler) ===|
F:\ENDIVE\src\map\map.cpp||In constructor 'Map::Map(std::string)':|
F:\ENDIVE\src\map\map.cpp|20|warning: comparison between signed and unsigned integer expressions [-Wsign-compare]|
obj\Debug\src\entities\character.o||In function `ZN4Json8FeaturesC2Ev':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|248|multiple definition of `Json::Features::Features()'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|248|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json8FeaturesC2Ev':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|248|multiple definition of `Json::Features::Features()'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|248|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json8Features3allEv':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|252|multiple definition of `Json::Features::all()'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|252|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json8Features10strictModeEv':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|254|multiple definition of `Json::Features::strictMode()'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|254|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6ReaderC2Ev':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|276|multiple definition of `Json::Reader::Reader()'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|276|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6ReaderC2Ev':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|276|multiple definition of `Json::Reader::Reader()'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|276|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6ReaderC2ERKNS_8FeaturesE':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|281|multiple definition of `Json::Reader::Reader(Json::Features const&)'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|281|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6ReaderC2ERKNS_8FeaturesE':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|281|multiple definition of `Json::Reader::Reader(Json::Features const&)'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|281|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader5parseERKSsRNS_5ValueEb':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|287|multiple definition of `Json::Reader::parse(std::string const&, Json::Value&, bool)'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|287|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader5parseERSiRNS_5ValueEb':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|295|multiple definition of `Json::Reader::parse(std::istream&, Json::Value&, bool)'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|295|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader5parseEPKcS2_RNS_5ValueEb':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|311|multiple definition of `Json::Reader::parse(char const*, char const*, Json::Value&, bool)'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|311|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader9readValueEv':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|350|multiple definition of `Json::Reader::readValue()'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|350|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader17skipCommentTokensERNS0_5TokenE':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|434|multiple definition of `Json::Reader::skipCommentTokens(Json::Reader::Token&)'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|434|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader9readTokenERNS0_5TokenE':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|444|multiple definition of `Json::Reader::readToken(Json::Reader::Token&)'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|444|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader10skipSpacesEv':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|515|multiple definition of `Json::Reader::skipSpaces()'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|515|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader5matchEPKci':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|525|multiple definition of `Json::Reader::match(char const*, int)'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|525|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader11readCommentEv':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|536|multiple definition of `Json::Reader::readComment()'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|536|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader10addCommentEPKcS2_NS_16CommentPlacementE':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|579|multiple definition of `Json::Reader::addComment(char const*, char const*, Json::CommentPlacement)'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|579|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader17readCStyleCommentEv':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|590|multiple definition of `Json::Reader::readCStyleComment()'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|590|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader19readCppStyleCommentEv':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|599|multiple definition of `Json::Reader::readCppStyleComment()'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|599|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader10readNumberEv':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|615|multiple definition of `Json::Reader::readNumber()'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|615|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader10readStringEv':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|637|multiple definition of `Json::Reader::readString()'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|637|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader10readObjectERNS0_5TokenE':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|649|multiple definition of `Json::Reader::readObject(Json::Reader::Token&)'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|649|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader9readArrayERNS0_5TokenE':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|705|multiple definition of `Json::Reader::readArray(Json::Reader::Token&)'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|705|first defined here|
obj\Debug\src\entities\character.o||In function `ZN4Json6Reader12decodeNumberERNS0_5TokenE':|
F:\ENDIVE\src\entities\..\map\..\json\jsoncpp.cpp|743|multiple definition of `Json::Reader::decodeNumber(Json::Reader::Token&)'|
obj\Debug\main.o:F:\ENDIVE\src\views\..\map\..\json\jsoncpp.cpp|743|first defined here|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build failed: 50 error(s), 1 warning(s) (0 minute(s), 59 second(s)) ===|

(Oui j'utilise C::B :p )

Le code qui l'importe :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef DEF_MAP
#define DEF_MAP

#include <string>
#include <SFML/Graphics.hpp>
#include <vector>

#include "tilemap.hpp"
#include "blocks/block.hpp"
#include "../json/jsoncpp.cpp"

class Map
{
private:
    // variables
    std::vector<Block> level;
    TileMap tmap;
    Json::Value root;
    std::string tileset_path;
    std::string map_data_path;
    // default values for the moment
    int map_width;
    int map_height;

public:
    Map(std::string);
    int load();
    void render(sf::RenderWindow&);
    void update(sf::RenderWindow&, sf::Time);
    int getWidth();
    int getHeight();
    bool colliding_at(int, int);
};

#endif // DEF_MAP

et le .cpp :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <fstream>

#include "map.hpp"
#include "../constants.hpp"

// public
Map::Map(std::string path) : tileset_path {"assets/tileset.png"}, map_width(16), map_height(8)
{
    /* for (int i=0; i < this->map_width * this->map_height; i++)
        this->level.push_back(Block(68, false)); */
    this->map_data_path = path;

    std::ifstream config_doc(this->map_data_path, std::ifstream::binary);
    config_doc >> this->root;

    this->map_width = this->root["width"].asInt();
    this->map_height = this->root["height"].asInt();
    std::vector<Block> loaded_map;
    for (int i=0; i < this->root["level"].size(); ++i)
        loaded_map.push_back(Block(this->root["level"][i]["id"].asInt(), this->root["level"][i]["collide"] == 1));
    this->level = loaded_map;
}

(je sais déjà ce que l'on va me dire sur l'usage du this-> mais je changerai pas d'avis, je continuerai à l'utiliser, parce que on voit beaucoup plus vite les variables de class comme ça (et préfixer avec m_ ou a_, c'est pas beau))

je sais vraiment pas quoi faire x)

Plizz someone help me je vous serais super reconnaissant :D !

Édité par artragis

Ma chaine YouTube ! | Seventh, un micro langage communautaire ! | Mon projet : Unamed (en pleine reprogrammation en C++11/SFML2.4) | Mon tuto sur Pygame !

+0 -0

Cette réponse a aidé l'auteur du sujet

j'ai pas installé json cpp comme c'était dit dans la doc … :-° parce que un peu flemme quand même. Plizz someone help me je vous serais super reconnaissant :D !

Cithoran

"je fais n'importe quoi et j'obtiens des erreurs, est-ce que je suis un boulet ?"

Oui.

On n'inclue pas un .cpp (sauf cas tres tres exceptionnels, quand c'est prevu pour cela)

+3 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte