logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Błąd linkera, multiple definition of 'cos_tam::metoda1()'.

bua 07 Sie 2007 00:03 1452 2
REKLAMA
  • #1 4153089
    bua
    Poziom 12  
    Posty: 81
    Pomógł: 1
    Witam.
    Piszę bo nie mam już siły walczę z tym od rana....

    linker wywala mi błąd:

    multiple definition of.... bla bla

    błąd sam w sobie jest logiczny, że niby jest juz gdzieś definicja (tutaj chodzi o funkcje)...
    Od początku jak mam tak:

    #include ....
    ...
    
    class cos_tam
    {
          metoda1();
          metoda2();
    };
    
    int main(){
    ..
    ..
    }
    
    cos_tam::metoda1(){
    ..
    ..
    ..
    
    

    tutaj wszystko jest ładnie..

    jeżeli wywale sobie deklaracje klasy do pliku nagłówkowego to też jest super...

    ale nie jest super jak wywale definicje metod do pliku cos_tam.cpp

    robię tak (w main):
    #include <windows>
    ..
    #include "cos_tam.cpp"
    
    
    w pliku cos_tam.cpp :
    #include "cos_tam.h"
    ...
    ...
    


    i wywala mi błąd linkera :
    multiple definition of 'cos_tam::metoda1()'
    first define here...

    Usuwałem ręcznie pliki xxx.o, próbowałem dawać definicje klasy i te badziewia do innej przestrzeni (namespace), próbowałem nawet wziąć kod w klamry extern "C" {} choć nie wiem co on miał przynieść...
    kompletnie nie trzyma mi się to kupy...

    do linkera dołączam takie bibloteki mysql, iphlpapi
    dołączam oczywićie pliki nagłówkowe do tych biblotek...
    plus windows, iptypes, string...

    powiem szczerze że nie miałem nigdy wcześniej tego problemu....
    narzędzie: dev_c++ 4.9.9.2

    pozdro i sorki jeśli pytanie lamerskie..
  • REKLAMA
  • #2 4153152
    krzychoocpp
    VIP Zasłużony dla elektroda
    Posty: 1866
    Pomógł: 387
    Ocena: 58
    Witam, masz coś takiego w kodzie:
    #include "cos_tam.cpp"
    ?

    Jeśli tak, to nic dziwnego, przecież include wstawia zawartość pliku i masz dwie definicje, jedną w main, drugą w cos_tam. Dołącz tylko plik cos_tam.h. Dołącz go i w main.cpp i w cos_tam.cpp.

    Pozdrawiam, Krzysztof.
  • #3 4153577
    bua
    Poziom 12  
    Posty: 81
    Pomógł: 1
    zadziałało w ten sposób że w opcjach projektu wywaliłem kompilacje cos_tam.cpp i wtedy poszło,
    to mnie jednak nie odpowiadało i rano na spokojnie pousuwałem wszystkie badziewia i zrobiłem tak jak piszesz czyli najlogiczniej w świecie, jedno xx.h w main drugie xxx.h w cos_tam.cpp, przywróciłem komilację pliku cos_tam.cpp w opcjach projektu i ruszyło.....

    nie nawidze takich szkolnych wrzodów na tyłku...

    pzdr i dzięki
REKLAMA