• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problemy z linkerem

0 głosów
806 wizyt
pytanie zadane 24 grudnia 2015 w C i C++ przez niezalogowany
edycja 24 grudnia 2015

Witam, piszę program w Builder C++ 6 do magazynowania ilości oraz właściwości komponentów elektronicznych. Gdy zrobię np Bezpiecznik B1 to wyświetla mi się taki komunikat:

[Linker Error] Unresolved external 'Bezpiecznik::Bezpiecznik(double, double, System::AnsiString)' referenced from K:\BULDER C++\MAGAZYN\UNIT1.OBJ

[Linker Error] Unresolved external 'Bezpiecznik::~Bezpiecznik()' referenced from K:\BULDER C++\MAGAZYN\UNIT1.OBJ

Oto kod z Builder'a:

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"

#include "klasy/bezpiecznik.h"
#include "klasy/cewka.h"
#include "klasy/diak.h"
#include "klasy/dioda.h"
#include "klasy/dlawik.h"
#include "klasy/kondensator.h"
#include "klasy/mostek.h"
#include "klasy/potencjometr.h"
#include "klasy/rezystor.h"
#include "klasy/stabilizator.h"
#include "klasy/termistor.h"
#include "klasy/transformator.h"
#include "klasy/tranzystor.h"
#include "klasy/triak.h"
#include "klasy/trymer.h"
#include "klasy/tyrystor.h"


//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cdiroutl"
#pragma link "PERFGRAP"
#pragma resource "*.dfm"
TForm1 *Form1;
Komponent *VKomponent;

Bezpiecznik B1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::oprogramie1Click(TObject *Sender)
{
	Form2->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::otwrcach1Click(TObject *Sender)
{
	Form3->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Label2Click(TObject *Sender)
{

	VKomponent->wyswietl();
}
//---------------------------------------------------------------------------

Kod klasy .h:

#ifndef BEZPIECZNIK_H_INCLUDED
#define BEZPIECZNIK_H_INCLUDED

#include "Komponent.h"
class Bezpiecznik :public Komponent
{
public:
    void dodaj();//dodaje bezpiecznik do bazy
    void usun();//usuwa bezpiecznik z bazy
    void zmien();//zmienia wlasciwosci bezpiecznika z bazy
    void wyswietl();//wyswietla ilosc komponentow w bazie

    Bezpiecznik(double=400,double=10,AnsiString="szybki");//konstruktor
    ~Bezpiecznik();//destruktor

private:
    static unsigned int il_bez;//ilosc bezpiecznikow
    double napiecie;//maksymalne napiecie
    double prad;//maksymalny prad
    AnsiString typ;//typ bezpiecznika(szybki itp)
};
#endif // BEZPIECZNIK_H_INCLUDED

Kod klasy .cpp:

#include "bezpiecznik.h"

unsigned int Bezpiecznik::il_bez;

Bezpiecznik::Bezpiecznik(double nap,double amper,string type)
{
    il_bez++;

    napiecie=nap;
    prad=amper;
    typ=type;
}

Bezpiecznik::~Bezpiecznik()
{
    il_bez--;
}

void Bezpiecznik::dodaj()
{

}

void Bezpiecznik::usun()
{

}

void Bezpiecznik::zmien()
{

}

void Bezpiecznik::wyswietl()
{

}

 

2 odpowiedzi

0 głosów
odpowiedź 25 grudnia 2015 przez jeremus Maniak (59,720 p.)
wybrane 26 grudnia 2015
 
Najlepsza
w listingu, który prezentujesz  klasa bezpiecznik jest definiowana  w pliku klasy.h a nie bezpiecznik.h

chyba że coś nie tak komentujesz ..
komentarz 25 grudnia 2015 przez niezalogowany
nie kumam o co chodzi
komentarz 25 grudnia 2015 przez jeremus Maniak (59,720 p.)
umieść gdzieś cały projekt, to zobaczę o co chodzi..
komentarz 25 grudnia 2015 przez niezalogowany
Chcesz wszystkie pliki projektu?? No ok, tylko gdzie mam Ci to wrzucić
komentarz 25 grudnia 2015 przez jeremus Maniak (59,720 p.)
pewnie nie jest duzy jeszcze :)

spakuj i wyślij na jeremus@tlen.pl
komentarz 25 grudnia 2015 przez niezalogowany
edycja 25 grudnia 2015
Znaczy się to waży 5.5MB przed spakowaniem i muszę Ci zaufać, że nie ukradniesz mi tego czy coś.

@Edit nie mogę wysłać Gmail blokuje mi taką możliwość
komentarz 25 grudnia 2015 przez jeremus Maniak (59,720 p.)
bez obaw :))))
komentarz 25 grudnia 2015 przez jeremus Maniak (59,720 p.)
no to na dysku google ?
komentarz 25 grudnia 2015 przez niezalogowany
Może być OneDrive??
komentarz 25 grudnia 2015 przez jeremus Maniak (59,720 p.)
cokolwiek,abym mógł pobrac
komentarz 25 grudnia 2015 przez niezalogowany
https://onedrive.live.com/redir?resid=ABAF240DB158AB51!5967&authkey=!AGk7kjMYr4YeBqE&ithint=file%2czip

Oto link. Będzie Aktywny do 20:17 Jakby był problem z linkiem to powiedz bo nie udostępniam na co dzień plików.
komentarz 25 grudnia 2015 przez niezalogowany
Ściągnąłeś??
komentarz 25 grudnia 2015 przez jeremus Maniak (59,720 p.)
mam - możesz kasować - dam znac jak cos znajdę ..
komentarz 25 grudnia 2015 przez niezalogowany
Tam masz w komentarzu wszystkie Obiekty, żebym mógł kontynuować pracę musiałem je tak dać. Niestety. Dzięki że chcesz mi pomóc :)
komentarz 25 grudnia 2015 przez jeremus Maniak (59,720 p.)
widzę że to trochę bardziej skomplikowane niż myślałem

jutro tym się zajmę - więc proszę o cierpliwość
komentarz 25 grudnia 2015 przez niezalogowany
Spoko, zależy mi na tym projekcie bo to jest dla mojego przyjaciela, który dużo dla mnie robi i chcę mu to dać jako prezent urodzinowy bo ma za niedługo urodziny. Dzięki za uczciwość i za to, że mi pomagasz :)
komentarz 25 grudnia 2015 przez jeremus Maniak (59,720 p.)
1. Aby klasy z nowych modułów ( plików *.cpp, *.h ) były widoczne trzeba je dodać do projektu Opcja : Project->Add to Project

2. Po dodaniu biblioteka skompilowała sie z błędem. Dodałem

#include <vcl.h>

w bezpiecznik.h

i poszło

pozostałe komponenty podobnie...

pozdrawiam
komentarz 26 grudnia 2015 przez niezalogowany
Dzięki za pomoc :) Dostajesz NAJ zasłużyłeś :)
0 głosów
odpowiedź 25 grudnia 2015 przez Sebastian Fojcik Nałogowiec (43,040 p.)

Nie wiem czy to jest problemem głównym, ale wydaje mi się, że jest różnica między deklaracją konstruktora a jego definicją:
Deklaracja:

Bezpiecznik(double=400,double=10,AnsiString="szybki");

Definicja:

Bezpiecznik::Bezpiecznik(double nap,double amper,string type)

Raz masz "AnsiString", a raz "string". W C++ Builderze nie programuję, ale z technicznego punktu widzenia wydaje mi się, że linker może nie odnajdować definicji konstruktora, który zadeklarowałeś. Spróbuj to poprawić. Sam jestem ciekaw ;-)

komentarz 25 grudnia 2015 przez niezalogowany
Poprawiłem to i nic się nie zmieniło. Tak jakby nie widział pliku bezpiecznik.cpp ale przecież wszystko podpiąłem

Podobne pytania

0 głosów
2 odpowiedzi 766 wizyt
0 głosów
1 odpowiedź 263 wizyt
pytanie zadane 16 stycznia 2017 w C i C++ przez Ala123456 Użytkownik (760 p.)
0 głosów
2 odpowiedzi 4,698 wizyt
pytanie zadane 14 listopada 2016 w C i C++ przez xjakubekx Obywatel (1,280 p.)

93,743 zapytań

142,682 odpowiedzi

323,299 komentarzy

63,330 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...