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

Builder Podpięcie własnego pliku nagłówkowego

0 głosów
44 wizyt
pytanie zadane 22 czerwca w C i C++ przez OneOrZero Nowicjusz (120 p.)

Witam,

Jestem w trakcie pisania funkcjonalności do mojej aplikacji tworzonej w Builderze. W tym celu stworzyłem więc dwa osobne pliki, *.h i *.cpp z niezbędną funkcjonalnością, wszystko zostało napisane i przetestowane w code::blocku. Wspomniane pliki umieściłem w głównym katalogu z projektem tworzonym w Builderze. Następnie podpiołem plik *.h i na jego podstawie stworzyłem obiekt a nastepnie wywołałem na jego rzecz metodę. Po próbie kompilacji wyskoczył mi nastepujący błąd: 

[Linker Error] Unresolved external 'Clean::MClear()' referenced from C:\USERS\ONEORZERO\DESKTOP\PULPIT\BUILDERCPP\PLANER_2\UNIT8.OBJ

Czy ktoś potrafiłby wytłumaczyć mi dlaczego coś takiego ma miejsce?

Oto kod z aplikacji:

//---------------------------------------------------------------------------
#include "MCleaner.h" // To ten plik nagłówkowy
#include <vcl.h>
#pragma hdrstop

#include "Unit8.h"
#include <fstream.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm8 *Form8;
//---------------------------------------------------------------------------
__fastcall TForm8::TForm8(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm8::CH1Click(TObject *Sender)
{
        if(CH1->Checked==true) C1->Enabled=true;
        else C1->Enabled=false;
}
//---------------------------------------------------------------------------

void __fastcall TForm8::ActiveClick(TObject *Sender)
{
        if(Clear->Enabled==false)
        {
                Clear->Enabled=true;
                Active->Caption="Unactive \"Clear\"";
        }
        else
        {
                Clear->Enabled=false;
                Active->Caption="Active \"Clear\"";
        }
}
//---------------------------------------------------------------------------
void __fastcall TForm8::ClearClick(TObject *Sender)
{
        Clean c1;   // To obiekt którego klasa jest zapisana w pliku MCleaner.h
        c1.MClear();   //Metoda wywoływana na rzecz tego obiektu
}
//---------------------------------------------------------------------------

Oraz kod pliku *.h :

#include <iostream>

using namespace std;

class Clean
{
public:

    void MClear();
};

Plik *.cpp

#include <iostream>
#include <fstream>
#include "MCleaner.h"

using namespace std;

void Clean::MClear()
{
    fstream plik;

    plik.open("MCleaner.bat",ios::out);

    if(plik.good()==false)
    {

    }
    else
    {
        plik << "@echo off" << endl;
        plik << "Title Wyczysc Pulpit 1.0" << endl;

        plik << "mkdir TXT" << endl;
        plik << "mkdir JPG" << endl;
        plik << "mkdir PNG" << endl;
        plik << "mkdir MP4" << endl;
        plik << " mkdir MP3" << endl;
        plik << "mkdir PDF" << endl;
        plik << "mkdir MS_OFFICE" << endl;
        plik << "mkdir INNE" << endl;
        plik << "move *.txt TXT" << endl;
        plik << "move *.jpg JPG" << endl;
        plik << "move *.png PNG" << endl;
        plik << "move *.mp4 MP4" << endl;
        plik << "move *.mp3 MP3" << endl;
        plik << "move *.docx MS_OFFICE" << endl;
        plik << "echo Reszta zostanie przeniesiona do folderu inne!" << endl;
        plik << "echo ---------------------------------------------" << endl;
        plik << "echo Kliknij ENTER" << endl;
        plik << "echo -------------" << endl;
        plik << "pause>nul" << endl;
        plik << "move *.* INNE" << endl;

        plik.clear();
        plik.close();
    }
}
komentarz 22 czerwca przez tangarr VIP (138,360 p.)
Chyba zapomniałeś dodać pliku cpp do projektu. Kompilator musi wiedzieć, że ten plik też ma zostać skompilowany. Nie wystarczy umieścić pliku źródłowego w katalogu projektu.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 72 wizyt
0 głosów
0 odpowiedzi 152 wizyt
0 głosów
2 odpowiedzi 1,402 wizyt

88,401 zapytań

137,011 odpowiedzi

305,796 komentarzy

58,657 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...