Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro] Visual C++, multiple definition, linker error

Ostatnio zmodyfikowano 2009-07-27 21:06
Autor Wiadomość
DeBugger
» 2009-07-22 11:10:15
Co do ostatniego postu Fanaela - jeżeli pisze się w C++, ja sugeruję użycie rozszerzenia "*.hpp".
P-8695
DeBugger
» 2009-07-22 11:24:47
main.cpp:
C/C++
#include "main.hpp"

int main()
{
   
}
END_OF_MAIN();
main.hpp:
C/C++
#ifndef main_hpp
#define main_hpp
#include "class.hpp"
#endif
class.cpp:
C/C++
#include "class.hpp"
using namespace std;

cObject::cObject() {
    string m_strName = "Object";
    int m_iPositionX = 0;
    int m_iPositionY = 0;
    BITMAP * m_bmImage = create_bitmap( 50, 50 );
    int m_iWidth = 50;
    int m_iHeight = 50;
}

cObject::cObject( string strName, int iPositionX, int iPositionY, string strPathOfFile ) {
    string m_strName = strName;
    int m_iPositionX = iPositionX;
    int m_iPositionY = iPositionY;
    BITMAP * m_bmImage = load_bmp( strPathOfFile.c_str(), default_palette );
    int m_iWidth = m_bmImage->w;
    int m_iHeight = m_bmImage->h;
}
class.hpp:
C/C++
#ifndef class_hpp
#define class_hpp
#include <string>
#include <allegro.h>

using namespace std;

class cObject {
public:
    string m_strName;
    int m_iPositionX;
    int m_iPositionY;
    BITMAP * m_bmImage;
    int m_iWidth;
    int m_iHeight;
    cObject();
    cObject( string, int, int, string );
};

class cCharacter
    : public cObject
{
public:
    int m_iHP;
    int m_iAttack;
    int m_iDefense;
    int m_iInjuryMin;
    int m_iInjuryMax;
    int m_iSpeed;
};

class cMonster
    : public cCharacter
{
};

class cPlayer
    : public cCharacter
{
};


#endif
Metoda kompilacji (Linux Ubuntu Terminal):
g++ `allegro-config --libs --shared` main.cpp class.cpp -o game
P-8697
steckel
Temat założony przez niniejszego użytkownika
» 2009-07-22 11:46:11
Jak to zastosować w CodeBlocks?

g++ `allegro-config --libs --shared` main.cpp class.cpp -o game
Teraz mam dokładnie to co JCJ:
C/C++
D:\p rojekty\inne\diablo\.objs\class.o(.text + 0x0 ) || In function ` ZN7cObjectC2Ev ':|
D:\p rojekty\inne\diablo\class.cpp | 4 | multiple definition of ` cObject::cObject() '|
D:\p rojekty\inne\diablo\.objs\main.o(.text + 0x0 )
    : D:\p rojekty\inne\diablo\class.cpp | 4 | first defined here | D:\p rojekty\inne\diablo\.objs\class.o(.text + 0x346 ) || In function ` ZN7cObjectC1Ev ':| D:\p rojekty\inne\diablo\class.cpp | 4 | multiple definition of ` cObject::cObject() '| D:\p rojekty\inne\diablo\.objs\main.o(.text + 0x346 )
    : D:\p rojekty\inne\diablo\class.cpp | 4 | first defined here | D:\p rojekty\inne\diablo\.objs\class.o(.text + 0x68c ) || In function ` ZN7cObjectC2ESsiiSs ':| D:\p rojekty\inne\diablo\class.cpp | 13 | multiple definition of ` cObject::cObject( std::string, int, int, std::string ) '| D:\p rojekty\inne\diablo\.objs\main.o(.text + 0x68c )
    : D:\p rojekty\inne\diablo\class.cpp | 13 | first defined here | D:\p rojekty\inne\diablo\.objs\class.o(.text + 0x9aa ) || In function ` ZN7cObjectC1ESsiiSs ':| D:\p rojekty\inne\diablo\class.cpp | 13 | multiple definition of ` cObject::cObject( std::string, int, int, std::string ) '| D:\p rojekty\inne\diablo\.objs\main.o(.text + 0x9aa )
    : D:\p rojekty\inne\diablo\class.cpp | 13 | first defined here | ||=== Build finished
    : 8 errors
    , 0 warnings ===|
P-8698
DeBugger
» 2009-07-22 11:50:02
Tworzysz projekt, i dodajesz do niego wszystkie pliki, a później wklejasz im zawartość, linkujesz projekt i kompilujesz. ;)
P-8699
steckel
Temat założony przez niniejszego użytkownika
» 2009-07-22 12:43:27
Z tym linkowaniem chodzi o to, aby to:

g++ `allegro-config --libs --shared` main.cpp class.cpp -o game
wkleić do "other linker options"?
Jeżeli tak to są nowe błedy:


-------------- Build: Debug in diablo ---------------

Linking console executable: diablo.exe
mingw32-g++.exe: g++: No such file or directory
Process terminated with status 1 (0 minutes, 0 seconds)
0 errors, 0 warnings
P-8700
DeBugger
» 2009-07-22 12:48:07
Wystarczy to:
`allegro-config --libs --shared`
P-8702
steckel
Temat założony przez niniejszego użytkownika
» 2009-07-22 12:52:45
No to dalej mam te same błędy co wcześniej:
C/C++
D:\p rojekty\inne\diablo\class.cpp || In constructor ` cObject::cObject() ':|
D:\p rojekty\inne\diablo\class.cpp | 6 | warning
    : unused variable 'm_iPositionX' | D:\p rojekty\inne\diablo\class.cpp | 7 | warning
    : unused variable 'm_iPositionY' | D:\p rojekty\inne\diablo\class.cpp | 8 | warning
    : unused variable 'm_bmImage' | D:\p rojekty\inne\diablo\class.cpp | 9 | warning
    : unused variable 'm_iWidth' | D:\p rojekty\inne\diablo\class.cpp | 10 | warning
    : unused variable 'm_iHeight' | D:\p rojekty\inne\diablo\class.cpp || In constructor ` cObject::cObject( std::string, int, int, std::string ) ':| D:\p rojekty\inne\diablo\class.cpp | 15 | warning
    : unused variable 'm_iPositionX' | D:\p rojekty\inne\diablo\class.cpp | 16 | warning
    : unused variable 'm_iPositionY' | D:\p rojekty\inne\diablo\class.cpp | 18 | warning
    : unused variable 'm_iWidth' | D:\p rojekty\inne\diablo\class.cpp | 19 | warning
    : unused variable 'm_iHeight' | D:\p rojekty\inne\diablo\main.cpp || In function ` int _mangled_main() ':| D:\p rojekty\inne\diablo\main.cpp | 7 | warning
    : control reaches end of non - void function | D:\p rojekty\inne\diablo\class.cpp || In constructor ` cObject::cObject() ':| D:\p rojekty\inne\diablo\class.cpp | 6 | warning
    : unused variable 'm_iPositionX' | D:\p rojekty\inne\diablo\class.cpp | 7 | warning
    : unused variable 'm_iPositionY' | D:\p rojekty\inne\diablo\class.cpp | 8 | warning
    : unused variable 'm_bmImage' | D:\p rojekty\inne\diablo\class.cpp | 9 | warning
    : unused variable 'm_iWidth' | D:\p rojekty\inne\diablo\class.cpp | 10 | warning
    : unused variable 'm_iHeight' | D:\p rojekty\inne\diablo\class.cpp || In constructor ` cObject::cObject( std::string, int, int, std::string ) ':| D:\p rojekty\inne\diablo\class.cpp | 15 | warning
    : unused variable 'm_iPositionX' | D:\p rojekty\inne\diablo\class.cpp | 16 | warning
    : unused variable 'm_iPositionY' | D:\p rojekty\inne\diablo\class.cpp | 18 | warning
    : unused variable 'm_iWidth' | D:\p rojekty\inne\diablo\class.cpp | 19 | warning
    : unused variable 'm_iHeight' | D:\p rojekty\inne\diablo\.objs\class.o(.text + 0x0 ) || In function ` ZN7cObjectC2Ev ':| D:\p rojekty\inne\diablo\class.cpp | 4 | multiple definition of ` cObject::cObject() '| D:\p rojekty\inne\diablo\.objs\main.o(.text + 0x0 )
    : D:\p rojekty\inne\diablo\class.cpp | 4 | first defined here | D:\p rojekty\inne\diablo\.objs\class.o(.text + 0x346 ) || In function ` ZN7cObjectC1Ev ':| D:\p rojekty\inne\diablo\class.cpp | 4 | multiple definition of ` cObject::cObject() '| D:\p rojekty\inne\diablo\.objs\main.o(.text + 0x346 )
    : D:\p rojekty\inne\diablo\class.cpp | 4 | first defined here | D:\p rojekty\inne\diablo\.objs\class.o(.text + 0x68c ) || In function ` ZN7cObjectC2ESsiiSs ':| D:\p rojekty\inne\diablo\class.cpp | 13 | multiple definition of ` cObject::cObject( std::string, int, int, std::string ) '| D:\p rojekty\inne\diablo\.objs\main.o(.text + 0x68c )
    : D:\p rojekty\inne\diablo\class.cpp | 13 | first defined here | D:\p rojekty\inne\diablo\.objs\class.o(.text + 0x9aa ) || In function ` ZN7cObjectC1ESsiiSs ':| D:\p rojekty\inne\diablo\class.cpp | 13 | multiple definition of ` cObject::cObject( std::string, int, int, std::string ) '| D:\p rojekty\inne\diablo\.objs\main.o(.text + 0x9aa )
    : D:\p rojekty\inne\diablo\class.cpp | 13 | first defined here | ||=== Build finished
    : 8 errors
    , 19 warnings ===|
P-8703
DeBugger
» 2009-07-22 12:55:34
To coś jest nie tak. Daj screena z swoim C::B, a coś poradzę (imageshack.us).
P-8704
1 « 2 » 3 4 5 6 7
Poprzednia strona Strona 2 z 7 Następna strona