Ir para conteúdo
Fórum Script Brasil
  • 0

da uma ajuda sobre compilar aki


Guest SubDark

Pergunta

Bom e sobre Ot server de tibia, procurei me informar e agente baixa os SVN para compilar e transformar no executavel do ot server, so que procurei procurei procurei e não comsegui compilar um para XML, como vocês aki entenden muito em compilação gostaria de pedir para da umas olhadas nos tutus da net e ver qual os erros e postar aki uma forma de eu compilar um ot para XML, porque a todos que vi dao sempre erro, so um para SQL que pego mais não uso SQL, eu quero um para XML

se vocês comseguirem me dar um tutorial para XML corigidos por vocês eu agradeceria muito, porque nos forums de ot de tibia e so ctrl+c e ctrl+v dos outros e tudo no mesmo erro x.x se poderem me ajudar agradeço muitoooo

a sim uso o programa Dev Cpp (Dev C++) nos tutoriais na net você vao ver como eles fazen e como usan,

Agradeço pela atenção !

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

ta ae o tutu para vocês verem

Criação e Configuração do seu Projeto (XML)

Bom, Agora você vai criar o seu projeto, no DevC++ vá até o menu "Arquivo", depois "Novo" e clique em "Projeto". Na janela que aparecer clique em "Console Application" e certifique-se que lá abaixo está marcado "Projeto C++", coloque o nome "OTServ" e clique em OK. Assim que você criar o projeto, salve ele no diretorio principal da pasta do seu OTServ(não dentro da pasta "Sources"). Você vai notar que no canto esquerto existe um arquivo "main.cpp", clique com o botão direito, e clique em "Remover Arquivo", pronto, agora só remover do seu diretório.

Chegou a hora de configurar seu projeto, no menu principal vá ate "Projeto" depois clique em "Opções do projeto". Na janela que aparecer vá até a Parameters e em "Compilador C++" coloque:

-D__WINDOWS__

-D__EXCEPTION_TRACER__

-D__SKULLSYSTEM__

Em Linker coloque:

-llibxml2

-llu

-lwsock32

-lregex

-lgmp

-s

-Wl,-Map=otserv.map

Agora vá até a aba "Arquivos/Diretórios", na primeira sub-aba("Diretório das bibliotecas"), coloque os seguintes items:

C:\Dev-CPP\others\boost_1_33_1\libregex

C:\Dev-CPP\others\lua-5.1\lib

Agora na segunda sub-aba("Diretório de include") coloque:

C:\Dev-CPP\others\boost_1_33_1

C:\Dev-CPP\others\lua-5.1\include

Agora vá até a aba "Opções de criação", na primeira opção escolha a pasta "Servidor", e na debaixo coloque a pasta "Objetos". Pronto, configuramos nosso projeto, podemos fechar essa janela clicando em "OK", agora devemos incluir os arquivos fontes do nosso servidor, para fazer isso clique com o direito no seu projeto (aba lateral esquerda) e clique em "Adicionar ao projeto". Vá até o diretório Sources e inclua todos os arquivos deixando APENAS os seguintes:

database.cpp

database.h

databasesqlite.cpp

databasesqlite.h

databasemysql.cpp

databasemysql.h

ioaccountsql.cpp

ioaccountsql.h

ioplayersql.cpp

ioplayersql.h

iomapserializesql.cpp

iomapserializesql.h

4.6 - Compilar!

Chegamos ao ponto mais importante, a hora de COMPILAR. Caso você tenha seguido esse tutorial com todo o cuidado, nada vai dar errado, então começe a feixar todos os programas que ocupam memória no seu computador e aperte "Rebuild All"(Ctrl+F11)

Erro que da depois

Compilador: Default compiler

Building Makefile: "C:\Dev-Cpp\Projecto\Makefile.win"

Executando make clean

rm -f ../objetos/account.o ../objetos/actions.o ../objetos/admin.o ../objetos/allocator.o ../objetos/ban.o ../objetos/baseevents.o ../objetos/chat.o ../objetos/combat.o ../objetos/commands.o ../objetos/condition.o ../objetos/configmanager.o ../objetos/connection.o ../objetos/container.o ../objetos/creature.o ../objetos/creatureevent.o ../objetos/cylinder.o ../objetos/databaseodbc.o ../objetos/databasepgsql.o ../objetos/depot.o ../objetos/exception.o ../objetos/fileloader.o ../objetos/game.o ../objetos/house.o ../objetos/housetile.o ../objetos/ioaccount.o ../objetos/iomapotbm.o ../objetos/iomapserialize.o ../objetos/iomapxml.o ../objetos/ioplayer.o ../objetos/item.o ../objetos/items.o ../objetos/logger.o ../objetos/luascript.o ../objetos/mailbox.o ../objetos/map.o ../objetos/md5.o ../objetos/monster.o ../objetos/monsters.o ../objetos/movement.o ../objetos/networkmessage.o ../objetos/npc.o ../objetos/otserv.o ../objetos/outfit.o ../objetos/outputmessage.o ../objetos/player.o ../objetos/position.o ../objetos/protocol.o ../objetos/protocolgame.o ../objetos/protocollogin.o ../objetos/raids.o ../objetos/rsa.o ../objetos/scheduler.o ../objetos/scriptmanager.o ../objetos/server.o ../objetos/sha1.o ../objetos/spawn.o ../objetos/spells.o ../objetos/status.o ../objetos/talkaction.o ../objetos/tasks.o ../objetos/teleport.o ../objetos/thing.o ../objetos/tile.o ../objetos/tools.o ../objetos/trashholder.o ../objetos/vocation.o ../objetos/waitlist.o ../objetos/weapons.o CastelOt.exe

g++.exe -D__DEBUG__ -c "../Otserver Svn/account.cpp" -o ../objetos/account.o -I"lib/gcc/mingw32/3.4.2/include" -I"include/c++/3.4.2/backward" -I"include/c++/3.4.2/mingw32" -I"include/c++/3.4.2" -I"include" -I"C:/Dev-Cpp/others/boost_1_33_1" -I"C:/Dev-Cpp/others/lua-5.1/include" -D__WINDOWS__ -D__EXCEPTION_TRACER__ -D__SKULLSYSTEM__ -g3

g++.exe -D__DEBUG__ -c "../Otserver Svn/actions.cpp" -o ../objetos/actions.o -I"lib/gcc/mingw32/3.4.2/include" -I"include/c++/3.4.2/backward" -I"include/c++/3.4.2/mingw32" -I"include/c++/3.4.2" -I"include" -I"C:/Dev-Cpp/others/boost_1_33_1" -I"C:/Dev-Cpp/others/lua-5.1/include" -D__WINDOWS__ -D__EXCEPTION_TRACER__ -D__SKULLSYSTEM__ -g3

In file included from ../Otserver Svn/iomapserialize.h:40,

from ../Otserver Svn/map.h:32,

from ../Otserver Svn/game.h:29,

from ../Otserver Svn/actions.cpp:27:

../Otserver Svn/database.h:65: error: `DATABASE_CLASS' does not name a type

../Otserver Svn/database.h:66: error: `DBRES_CLASS' does not name a type

../Otserver Svn/database.h:84: error: ISO C++ forbids declaration of `Database' with no type

../Otserver Svn/database.h:84: error: expected `;' before '*' token

../Otserver Svn/database.h:130: error: ISO C++ forbids declaration of `DBResult' with no type

../Otserver Svn/database.h:130: error: expected `;' before '*' token

../Otserver Svn/database.h:140: error: expected `;' before "std"

../Otserver Svn/database.h:157: error: variable or field `freeResult' declared void

../Otserver Svn/database.h:157: error: expected `;' before '(' token

../Otserver Svn/database.h:163: error: ISO C++ forbids declaration of `DBResult' with no type

../Otserver Svn/database.h:163: error: expected `;' before '*' token

../Otserver Svn/database.h:166: error: ISO C++ forbids declaration of `Database' with no type

../Otserver Svn/database.h:166: error: expected `;' before '*' token

../Otserver Svn/database.h:238: error: expected `)' before '*' token

../Otserver Svn/database.h:267: error: ISO C++ forbids declaration of `Database' with no type

../Otserver Svn/database.h:267: error: expected `;' before '*' token

../Otserver Svn/database.h:290: error: expected `)' before '*' token

../Otserver Svn/database.h:327: error: ISO C++ forbids declaration of `Database' with no type

../Otserver Svn/database.h:327: error: expected `;' before '*' token

../Otserver Svn/database.h: In destructor `DBTransaction::~DBTransaction()':

../Otserver Svn/database.h:299: error: `m_database' undeclared (first use this function)

../Otserver Svn/database.h:299: error: (Each undeclared identifier is reported only once for each function it appears in.)

../Otserver Svn/database.h: In member function `bool DBTransaction::begin()':

../Otserver Svn/database.h:306: error: `m_database' undeclared (first use this function)

../Otserver Svn/database.h: In member function `bool DBTransaction::commit()':

../Otserver Svn/database.h:313: error: `m_database' undeclared (first use this function)

In file included from ../Otserver Svn/map.h:32,

from ../Otserver Svn/game.h:29,

from ../Otserver Svn/actions.cpp:27:

../Otserver Svn/iomapserialize.h: At global scope:

../Otserver Svn/iomapserialize.h:81: error: expected `;' before '(' token

../Otserver Svn/iomapserialize.h:82: error: expected `;' before '(' token

make.exe: *** [../objetos/actions.o] Error 1

Execução terminada

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu cara! É que eu nunca nem joguei Tíbia então é meio complicado ficar procurando algo que não sabemos o que é. Além disso eu iria ter que instalar compiladores e tudo o mais aqui para reproduzir o erro!

Agora quanto ao problema: parece algum erro na configuração do projeto pois não acredito que o código esteja com erro.

Todos os arquivos citados no caminho do tutorial existem conforme indicado?

Obs.: este é um erro do compilador, não do linker. Portanto não se preocupe em checar as configurações dele agora, ok? :)

Outra coisa: se der para colocar o código de database.h aqui deve ajudar pois podemos ver flags que não estão sendo passadas ao compilador.

Link para o comentário
Compartilhar em outros sites

  • 0

//////////////////////////////////////////////////////////////////////
// OpenTibia - an opensource roleplaying game
//////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software Foundation,
// Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
//////////////////////////////////////////////////////////////////////

#ifndef __OTSERV_DATABASE_H__
#define __OTSERV_DATABASE_H__

#include "definitions.h"
#include "otsystem.h"

#include <sstream>

#ifdef MULTI_SQL_DRIVERS
#define DATABASE_VIRTUAL virtual
#define DATABASE_CLASS _Database
#define DBRES_CLASS _DBResult
class _Database;
class _DBResult;
#else
#define DATABASE_VIRTUAL

#if defined(__USE_MYSQL__)
#define DATABASE_CLASS DatabaseMySQL
#define DBRES_CLASS MySQLResult
class DatabaseMySQL;
class MySQLResult;

#elif defined(__USE_SQLITE__)
#define DATABASE_CLASS DatabaseSQLite
#define DBRES_CLASS SQLiteResult
class DatabaseSQLite;
class SQLiteResult;

#elif defined(__USE_ODBC__)
#define DATABASE_CLASS DatabaseODBC
#define DBRES_CLASS ODBCResult
class DatabaseODBC;
class ODBCResult;

#elif defined(__USE_PGSQL__)
#define DATABASE_CLASS DatabasePgSQL
#define DBRES_CLASS PgSQLResult
class DatabasePgSQL;
class PgSQLResult;

#endif
#endif

typedef DATABASE_CLASS Database;
typedef DBRES_CLASS DBResult;

class DBQuery;

enum DBParam_t{
    DBPARAM_MULTIINSERT = 1
};

class _Database
{
public:
    /**
    * Singleton implementation.
    *
    * Retruns instance of database handler. Don't create database (or drivers) instances in your code - instead of it use Database::instance(). This method stores static instance of connection class internaly to make sure exacly one instance of connection is created for entire system.
    *
    * @return database connection handler singletor
    */
    static Database* instance();

    /**
    * Database information.
    *
    * Returns currently used database attribute.
    *
    * @param DBParam_t parameter to get
    * @return suitable for given parameter
    */
    DATABASE_VIRTUAL bool getParam(DBParam_t param) { return false; }

protected:
    /**
    * Transaction related methods.
    *
    * Methods for starting, commiting and rolling back transaction. Each of the returns boolean value.
    *
    * @return true on success, false on error
    * @note
    *    If your database system doesn't support transactions you should return true - it's not feature test, code should work without transaction, just will lack integrity.
    */
    friend class DBTransaction;
    DATABASE_VIRTUAL bool beginTransaction() { return 0; }
    DATABASE_VIRTUAL bool rollback() { return 0; }
    DATABASE_VIRTUAL bool commit() { return 0; }

public:
    /**
    * Executes command.
    *
    * Executes query which doesn't generates results (eg. INSERT, UPDATE, DELETE...).
    *
    * @param std::string query command
    * @return true on success, false on error
    */
    DATABASE_VIRTUAL bool executeQuery(const std::string &query) { return 0; }

    /**
    * Queries database.
    *
    * Executes query which generates results (mostly SELECT).
    *
    * @param std::string query
    * @return results object (null on error)
    */
    DATABASE_VIRTUAL DBResult* storeQuery(const std::string &query) { return 0; }

    /**
    * Escapes string for query.
    *
    * Prepares string to fit SQL queries including quoting it.
    *
    * @param std::string string to be escaped
    * @return quoted string
    */
    DATABASE_VIRTUAL std::string escapeString(const std::string &s) { return "''"; }
    /**
    * Escapes binary stream for query.
    *
    * Prepares binary stream to fit SQL queries.
    *
    * @param char* binary stream
    * @param long stream length
    * @return quoted string
    */
    DATABASE_VIRTUAL std::string escapeBlob(const char* s, uint32_t length) { return "''"; };

    /**
    * Resource freeing.
    *
    * @param DBResult* resource to be freed
    */
    DATABASE_VIRTUAL void freeResult(DBResult *res) {};

protected:
    _Database() {};
    DATABASE_VIRTUAL ~_Database() {};

    DBResult* verifyResult(DBResult* result);

private:
    static Database* _instance;
};

class _DBResult
{
    // unused at the moment
    //friend class Database;

public:
    /** Get the Integer value of a field in database
    *\return The Integer value of the selected field and row
    *\param s The name of the field
    */
    DATABASE_VIRTUAL int32_t getDataInt(const std::string &s) { return 0; }
    /** Get the Long value of a field in database
    *\return The Long value of the selected field and row
    *\param s The name of the field
    */
    DATABASE_VIRTUAL int64_t getDataLong(const std::string &s) { return 0; }
    /** Get the String of a field in database
    *\return The String of the selected field and row
    *\param s The name of the field
    */
    DATABASE_VIRTUAL std::string getDataString(const std::string &s) { return "''"; }
    /** Get the blob of a field in database
    *\return a PropStream that is initiated with the blob data field, if not exist it returns NULL.
    *\param s The name of the field
    */
    DATABASE_VIRTUAL const char* getDataStream(const std::string &s, unsigned long &size) { return 0; }

    /**
    * Moves to next result in set.
    *
    * \return true if moved, false if there are no more results.
    */
    DATABASE_VIRTUAL bool next() {return false;};

protected:
    _DBResult() {};
    DATABASE_VIRTUAL ~_DBResult() {};
};

/**
 * Thread locking hack.
 *
 * By using this class for your queries you lock and unlock database for threads.
*/
class DBQuery : public std::stringstream
{
    friend class _Database;

public:
    DBQuery();
    ~DBQuery();

protected:
    static OTSYS_THREAD_LOCKVAR database_lock;
};

/**
 * INSERT statement.
 *
 * Gives possibility to optimize multiple INSERTs on databases that support multiline INSERTs.
 */
class DBInsert
{
public:
    /**
    * Associates with given database handler.
    *
    * @param Database* database wrapper
    */
    DBInsert(Database* db);
    ~DBInsert() {};

    /**
    * Sets query prototype.
    *
    * @param std::string& INSERT query
    */
    void setQuery(const std::string& query);

    /**
    * Adds new row to INSERT statement.
    *
    * On databases that doesn't support multiline INSERTs it simply execute INSERT for each row.
    *
    * @param std::string& row data
    */
    bool addRow(const std::string& row);
    /**
    * Allows to use addRow() with stringstream as parameter.
    */
    bool addRow(std::stringstream& row);

    /**
    * Executes current buffer.
    */
    bool execute();

protected:
    Database* m_db;
    bool m_multiLine;
    uint32_t m_rows;
    std::string m_query;
    std::string m_buf;
};


#ifndef MULTI_SQL_DRIVERS
#if defined(__USE_MYSQL__)
#include "databasemysql.h"
#elif defined(__USE_SQLITE__)
#include "databasesqlite.h"
#elif defined(__USE_ODBC__)
#include "databaseodbc.h"
#elif defined(__USE_PGSQL__)
#include "databasepgsql.h"
#endif
#endif

class DBTransaction
{
public:
    DBTransaction(Database* database)
    {
        m_database = database;
        m_state = STATE_NO_START;
    }

    ~DBTransaction()
    {
        if(m_state == STATE_START){
            m_database->rollback();
        }
    }

    bool begin()
    {
        m_state = STATE_START;
        return m_database->beginTransaction();
    }

    bool commit()
    {
        if(m_state == STATE_START){
            m_state = STEATE_COMMIT;
            return m_database->commit();
        }
        else{
            return false;
        }
    }

private:
    enum TransactionStates_t{
        STATE_NO_START,
        STATE_START,
        STEATE_COMMIT
    };
    TransactionStates_t m_state;
    Database* m_database;
};

#endif

ta ae

Link para o comentário
Compartilhar em outros sites

  • 0

O problema é que algum dos bancos de dados devem ser selecionados senão não vai funcionar. Para confirmar, altere o trecho de código original do database.h:

#elif defined(__USE_PGSQL__)
#define DATABASE_CLASS DatabasePgSQL
#define DBRES_CLASS PgSQLResult
class DatabasePgSQL;
class PgSQLResult;

#endif
para:
#elif defined(__USE_PGSQL__)
#define DATABASE_CLASS DatabasePgSQL
#define DBRES_CLASS PgSQLResult
class DatabasePgSQL;
class PgSQLResult;
#else
#error Select a database
#endif
Se aparecer a mensagem de erro "Select a database" durante a compilação realmente este é o problema mas eu pessoalmente não tenho mais dúvidas que este é o problema. Mais uma coisa: será que este arquivo deve ser compilado? Pelo que diz no tutorial:
Vá até o diretório Sources e inclua todos os arquivos deixando APENAS os seguintes:

Você deve selecionar todos os arquivos no diretório, com exceção dos citados na lista, não é?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...