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();
}
}