Witajcie. Mam problem, z którym nie mogę sobie poradzić. Otóż program, na którym pracowałem na uczelni uruchamiał się bez problemów na tamtejszym komputerze z Windows XP i oprogramowaniem Visual Studio C++ 2005. Na moim domowym komputerze stacjonarnym z Win7 i Visual C++ 2010 również nie ma kłopotów. Niestety uczelniany sprzęt jest bardzo powolny, co znacznie utrudnia pracę. Postanowiłem więc zabierać ze sobą laptopa również na XP i Visualem 2005. Niestety kompilacja tego samego programu skutkuje zwrotem wielu błędów. Najpierw pokażę te błędy a następnie podam kody plików programu.
Z początku pokazuje jedynie, że zapomniałem dołączyć plik nagłówkowy stdafx.h do jednej z klas, jednak po dopisaniu tego nagłówka pojawia sie dużo więcej errorów:
Warning 1 warning C4244: '=' : conversion from 'double' to 'int', possible loss of data d:\Dokumenty\SO\Visual Studio 2005\Projects\Cwicz4\Cw4\Cw4\Kolo.cpp 19
Error 2 error LNK2028: unresolved token (0A00000E) "public: __clrcall Odcinek::Odcinek(int)" (??0Odcinek@@$$FQAM@H@Z) referenced in function "private: void __clrcall Cw4::Form1::buttonStart_Click(class System::Object ^,class System::EventArgs ^)" (?buttonStart_Click@Form1@Cw4@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) Cw4.obj
Error 3 error LNK2020: unresolved token (0A000009) "public: __clrcall Odcinek::~Odcinek(void)" (??1Odcinek@@$$FQAM@XZ) Kolo.obj
Error 4 error LNK2028: unresolved token (0A00000F) "public: __clrcall Odcinek::~Odcinek(void)" (??1Odcinek@@$$FQAM@XZ) referenced in function "private: void __clrcall Cw4::Form1::buttonStart_Click(class System::Object ^,class System::EventArgs ^)" (?buttonStart_Click@Form1@Cw4@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) Cw4.obj
Error 5 error LNK2028: unresolved token (0A000010) "public: void __clrcall Odcinek::Rysuj(class System::Windows::Forms::PictureBox ^,int,int)" (?Rysuj@Odcinek@@$$FQAMXP$AAVPictureBox@Forms@Windows@System@@HH@Z) referenced in function "private: void __clrcall Cw4::Form1::buttonStart_Click(class System::Object ^,class System::EventArgs ^)" (?buttonStart_Click@Form1@Cw4@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) Cw4.obj
Error 6 error LNK2028: unresolved token (0A000011) "public: int __clrcall Odcinek::Obwod(void)" (?Obwod@Odcinek@@$$FQAMHXZ) referenced in function "private: void __clrcall Cw4::Form1::buttonStart_Click(class System::Object ^,class System::EventArgs ^)" (?buttonStart_Click@Form1@Cw4@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) Cw4.obj
Error 7 error LNK2028: unresolved token (0A00000A) "public: int __clrcall Odcinek::PodajD(void)" (?PodajD@Odcinek@@$$FQAMHXZ) referenced in function "public: int __clrcall Kolo::Obwod(void)" (?Obwod@Kolo@@$$FQAMHXZ) Kolo.obj
Error 8 error LNK2028: unresolved token (0A000012) "public: int __clrcall Odcinek::PodajD(void)" (?PodajD@Odcinek@@$$FQAMHXZ) referenced in function "private: void __clrcall Cw4::Form1::buttonStart_Click(class System::Object ^,class System::EventArgs ^)" (?buttonStart_Click@Form1@Cw4@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) Cw4.obj
Error 9 error LNK2028: unresolved token (0A000008) "public: __clrcall Odcinek::Odcinek(void)" (??0Odcinek@@$$FQAM@XZ) referenced in function "public: __clrcall Kolo::Kolo(void)" (??0Kolo@@$$FQAM@XZ) Kolo.obj
Error 10 error LNK2028: unresolved token (0A00000B) "public: void __clrcall Odcinek::UstawD(int)" (?UstawD@Odcinek@@$$FQAMXH@Z) referenced in function "public: __clrcall Kolo::Kolo(int)" (??0Kolo@@$$FQAM@H@Z) Kolo.obj
Error 11 error LNK2019: unresolved external symbol "public: __clrcall Odcinek::~Odcinek(void)" (??1Odcinek@@$$FQAM@XZ) referenced in function "private: void __clrcall Cw4::Form1::buttonStart_Click(class System::Object ^,class System::EventArgs ^)" (?buttonStart_Click@Form1@Cw4@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) Cw4.obj
Error 12 error LNK2001: unresolved external symbol "public: __clrcall Odcinek::~Odcinek(void)" (??1Odcinek@@$$FQAM@XZ) Kolo.obj
Error 13 error LNK2019: unresolved external symbol "public: void __clrcall Odcinek::Rysuj(class System::Windows::Forms::PictureBox ^,int,int)" (?Rysuj@Odcinek@@$$FQAMXP$AAVPictureBox@Forms@Windows@System@@HH@Z) referenced in function "private: void __clrcall Cw4::Form1::buttonStart_Click(class System::Object ^,class System::EventArgs ^)" (?buttonStart_Click@Form1@Cw4@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) Cw4.obj
Error 14 error LNK2019: unresolved external symbol "public: int __clrcall Odcinek::Obwod(void)" (?Obwod@Odcinek@@$$FQAMHXZ) referenced in function "private: void __clrcall Cw4::Form1::buttonStart_Click(class System::Object ^,class System::EventArgs ^)" (?buttonStart_Click@Form1@Cw4@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) Cw4.obj
Error 15 error LNK2019: unresolved external symbol "public: int __clrcall Odcinek::PodajD(void)" (?PodajD@Odcinek@@$$FQAMHXZ) referenced in function "private: void __clrcall Cw4::Form1::buttonStart_Click(class System::Object ^,class System::EventArgs ^)" (?buttonStart_Click@Form1@Cw4@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) Cw4.obj
Error 16 error LNK2001: unresolved external symbol "public: int __clrcall Odcinek::PodajD(void)" (?PodajD@Odcinek@@$$FQAMHXZ) Kolo.obj
Error 17 error LNK2019: unresolved external symbol "public: __clrcall Odcinek::Odcinek(int)" (??0Odcinek@@$$FQAM@H@Z) referenced in function "private: void __clrcall Cw4::Form1::buttonStart_Click(class System::Object ^,class System::EventArgs ^)" (?buttonStart_Click@Form1@Cw4@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) Cw4.obj
Error 18 error LNK2019: unresolved external symbol "public: __clrcall Odcinek::Odcinek(void)" (??0Odcinek@@$$FQAM@XZ) referenced in function "public: __clrcall Kolo::Kolo(void)" (??0Kolo@@$$FQAM@XZ) Kolo.obj
Error 19 error LNK2019: unresolved external symbol "public: void __clrcall Odcinek::UstawD(int)" (?UstawD@Odcinek@@$$FQAMXH@Z) referenced in function "public: __clrcall Kolo::Kolo(int)" (??0Kolo@@$$FQAM@H@Z) Kolo.obj
Error 20 fatal error LNK1120: 16 unresolved externals D:\Dokumenty\SO\Visual Studio 2005\Projects\Cwicz4\Cw4\Debug\Cw4.exe
Poniżej dołączam kody plików:
Form1.h
#include "Odcinek.h"
#include "Kolo.h"
#pragma once
namespace Cw4 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
public ref class Form1
: public System::Windows::Forms::Form
{
public:
Form1( void )
{
InitializeComponent();
}
protected:
~Form1()
{
if( components )
{
delete components;
}
}
private: System::Windows::Forms::Button ^ buttonStart;
private: System::Windows::Forms::PictureBox ^ pictureBox1;
protected:
private:
System::ComponentModel::Container ^ components;
#pragma region Windows Form Designer generated code
void InitializeComponent( void )
{
this->buttonStart =( gcnew System::Windows::Forms::Button() );
this->pictureBox1 =( gcnew System::Windows::Forms::PictureBox() );
( cli::safe_cast < System::ComponentModel::ISupportInitialize ^ >( this->pictureBox1 ) )->BeginInit();
this->SuspendLayout();
this->buttonStart->Location = System::Drawing::Point( 157, 12 );
this->buttonStart->Name = L"buttonStart";
this->buttonStart->Size = System::Drawing::Size( 75, 23 );
this->buttonStart->TabIndex = 0;
this->buttonStart->Text = L"Start";
this->buttonStart->UseVisualStyleBackColor = true;
this->buttonStart->Click += gcnew System::EventHandler( this, & Form1::buttonStart_Click );
this->pictureBox1->Location = System::Drawing::Point( 12, 41 );
this->pictureBox1->Name = L"pictureBox1";
this->pictureBox1->Size = System::Drawing::Size( 352, 267 );
this->pictureBox1->TabIndex = 1;
this->pictureBox1->TabStop = false;
this->AutoScaleDimensions = System::Drawing::SizeF( 6, 13 );
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size( 383, 317 );
this->Controls->Add( this->pictureBox1 );
this->Controls->Add( this->buttonStart );
this->Name = L"Form1";
this->Text = L"Dziedziczenie klas";
( cli::safe_cast < System::ComponentModel::ISupportInitialize ^ >( this->pictureBox1 ) )->EndInit();
this->ResumeLayout( false );
}
#pragma endregion
private: System::Void buttonStart_Click( System::Object ^ sender, System::EventArgs ^ e ) {
Odcinek Odcinek1( 80 );
Kolo Kolo1;
int d1 = Odcinek1.PodajD();
int ob1 = Odcinek1.Obwod();
int ob2 = Kolo1.Obwod();
System::Drawing::RectangleF rectF( 230.0, 0.0, 200, 100 );
Graphics ^ gr2 = pictureBox1->CreateGraphics();
System::Drawing::Font ^ fo = gcnew System::Drawing::Font( "Arial Regular", 9.0 );
String ^ as = "Obwód odcinka =" + ob1.ToString() + "\nObwód koła =" + ob2.ToString();;
gr2->DrawString( as, fo, Brushes::Red, rectF );
Kolo1.Rysuj( pictureBox1, 5, 50 );
Odcinek1.Rysuj( pictureBox1, 50, 10 );
}
};
}
Odcinek.h:
#pragma once
class Odcinek
{
private:
int d;
public:
int obw;
Odcinek( void );
Odcinek( int d );
~Odcinek( void );
void Rysuj( System::Windows::Forms::PictureBox ^ pb, int x, int y );
int Obwod();
int PodajD();
void UstawD( int d );
};
Odcinek.cpp:
#pragma once
class Odcinek
{
private:
int d;
public:
int obw;
Odcinek( void );
Odcinek( int d );
~Odcinek( void );
void Rysuj( System::Windows::Forms::PictureBox ^ pb, int x, int y );
int Obwod();
int PodajD();
void UstawD( int d );
};
Kolo.h:
#include "Odcinek.h"
#pragma once
class Kolo
: public Odcinek
{
public:
Kolo( void );
Kolo( int pr );
~Kolo( void );
void Rysuj( System::Windows::Forms::PictureBox ^ pb, int x, int y );
int Obwod();
int PodajPR();
};
Kolo.cpp:
#include "Kolo.h"
#include "Odcinek.h"
Kolo::Kolo()
: Odcinek()
{
}
Kolo::Kolo( int pr )
{
UstawD( pr );
}
Kolo::~Kolo()
{
}
int Kolo::Obwod()
{
int pr = PodajD();
obw = 2 * 3.1415926535897932384626433832795 * pr;
return obw;
}
void Kolo::Rysuj( System::Windows::Forms::PictureBox ^ pb, int x, int y )
{
System::Drawing::Graphics ^ gr = pb->CreateGraphics();
int pr = PodajD();
System::Drawing::Rectangle rect( x, y, 2 * pr, 2 * pr );
gr->DrawEllipse( System::Drawing::Pens::Black, rect );
gr->FillEllipse( System::Drawing::Brushes::Blue, rect );
}
Dodam jeszcze, że instalowałem Framework 4.0 jednak to niestety nie pomogło. Co ciekawe w About mojego Visuala 2005 widnieje Framework 2.0..
Proszę was bardziej doświadczonych o radę. Jest to dla mnie bardzo ważne, Pozdrawiam!