[C++] Linker fouten in Borland Builder, niet in GCC

Pagina: 1
Acties:

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 11:25
Ik ben al de hele dag aan het zoeken naar een oplossing (google, Borland support forums, Gathering) en ik kan helemaal NIETS concreets hierover vinden.

Het probleem: een vriend van mij heeft een prototype gemaakt in C op z'n mac. Compiled prima met GCC, geen probleem.

Als ik de bestanden echter op mijn PC zet, een nieuwe console application maak met Borland Builder 6 en Build Project doe, buildt het programma wel, maaar krijg ik een hele berg linker errors (28) zoals deze:
[Linker Error] Unresolved external 'Employee::~Employee()' referenced from D:\TEST\MAIN.OBJ
[Linker Error] Unresolved external 'Patient::~Patient()' referenced from D:\TEST\MAIN.OBJ
[Linker Error] Unresolved external 'Event::~Event()' referenced from D:\TEST\MAIN.OBJ
[Linker Error] Unresolved external 'TabuList::~TabuList()' referenced from D:\TEST\MAIN.OBJ
[Linker Error] Unresolved external 'TabuItem::~TabuItem()' referenced from D:\TEST\MAIN.OBJ
[Linker Error] Unresolved external 'Schedule::~Schedule()' referenced from D:\TEST\MAIN.OBJ
etc..etc...

De linker lijkt dus de net gecompilde klasses niet te kunnen vinden ? Main.obj wordt wel gecrëerd tijdens het compilen en Borland Builder geeft verder geen reden waarom het mis gaat. Wie weet een oplossing?

[ Voor 4% gewijzigd door BCC op 27-04-2005 20:43 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 07-05 15:31

BoAC

Memento mori

Blijkbaar vindt hij de destructors van je classes niet :)
Hoe zien die eruit en zijn ze er uberhaupt wel?

Ik weet dat VC een default destructor aanmaakt doet die Borland compiler dat ook?

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 07-05 20:19

MBV

Ik zie alleen de destructors. Heb je die expliciet gedefinieerd? Virtual?

Misschien kan je de "smallest test case" online zetten. Doet hij het ook niet met dit:
code:
1
2
3
4
class mbv
{
    mbv(int) {}
};


wat het zou kunnen zijn is dat je als C ipv C++ compileert...

edit:
als je de ISO standaard bekijkt vermoed ik dat je zal zien dat die niet verplicht zijn...

ander vraagje: waarom zou je eigenlijk borland willen gebruiken? GCC is toch prima? :+

[ Voor 31% gewijzigd door MBV op 27-04-2005 20:58 ]


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 11:25
Is er ook een GCC voor Windows dan? Die heb ik nog niet kunnen vinden gcc.gnu.com is echt de meest onoverzichtelijke pagina OOIT!. Maar met de destructors is niets mis volgens mij: empolyee.cpp
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "Employee.h"

Employee::Employee()
{
}

Employee::Employee( int i, string n )
{
    identifier = i;
    name = n;
}

Employee::~Employee()
{
}

[ Voor 248% gewijzigd door BCC op 28-04-2005 01:11 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

Je hebt wel AL je source files aan je project toegevoegd (en dus niet alleen een project gestart, de main cpp geopend en op build gedrukt?)

Daarnaast: GCC is er ook voor windows (m.b.v cygwin) en er zijn ook GCC "ports" voor windows zoals MingW.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Je dient iedere C/CPP file toe te voegen aan je project. In menu Project->Add to Project. Selecteer je source files ( *.cpp ) en linken maar.

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 11:25
Verwijderd schreef op woensdag 27 april 2005 @ 21:50:
Je dient iedere C/CPP file toe te voegen aan je project. In menu Project->Add to Project. Selecteer je source files ( *.cpp ) en linken maar.
Ok.. ik dacht dattie dat zelf wel zou snappen dezien de includes.. maar niet dus. Afijn hij compiled nu, maar blijkbaar is Borland C++ weer heel iets anders dan GCC C++ :( Borland C++ lust geen dubbele arrays:
code:
1
    string matrix[workForce.size()][slots];

Nou wil ik best GCC gebruiken, maar MingW kom ik niet echt uit.

http://visual-mingw.sourceforge.net/doc/vmingw/index.htm
Daar staat "point to the compiler bin directory". Maar waar haal ik de compiler weg? Ik kan op gcc.gnu.org alleen maar sources vinden. En CygWin is helemaal spartaans. Je krijgt een linux console en zoek het maar uit?

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 10:58

Super_ik

haklust!

BCC schreef op woensdag 27 april 2005 @ 22:24:
[...]

Je krijgt een linux console en zoek het maar uit gebuik google, een berg howtos en wat manuals en GoT?
;)

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 11:25
Voor de mensen die nog geïnteresseerd zijn:

- Gebruik geen Borland Builder 6, want die hebben een eigen (ouderwetse) compiler, die in iedergeval niet GCC compatible is.
- Gebruik geen Visual Studio 2003, want ze geven zelf al aan dat je voor C++ VS 97 moet hebben, waardoor je weer met een oude compiler zit
- Gebruik geen CygWin/MingW. Deze hebben zo goed als geen bruikbare documentatie.


Gebruik Dev-C++ Versie 5 (BETA). http://www.bloodshed.net/dev/devcpp.html
Installeren en klaar!

[ Voor 9% gewijzigd door BCC op 28-04-2005 01:15 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • Onno
  • Registratie: Juni 1999
  • Niet online
BCC schreef op woensdag 27 april 2005 @ 22:24:
Borland C++ lust geen dubbele arrays:
code:
1
    string matrix[workForce.size()][slots];
Lust ie geen dubbele arrays, of lust ie geen statische arrays met een dynamische grootte? Ik zou niet weten hoe een compiler dat laatste zou moeten doen namelijk.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 10:04
Onno schreef op donderdag 28 april 2005 @ 08:35:
Lust ie geen dubbele arrays, of lust ie geen statische arrays met een dynamische grootte? Ik zou niet weten hoe een compiler dat laatste zou moeten doen namelijk.
Dat laatste en dat is een extensie van GCC als ik me niet vergis.
- Gebruik geen Borland Builder 6, want die hebben een eigen (ouderwetse) compiler, die in iedergeval niet GCC compatible is.
- Gebruik geen Visual Studio 2003, want ze geven zelf al aan dat je voor C++ VS 97 moet hebben, waardoor je weer met een oude compiler zit
- Gebruik geen CygWin/MingW. Deze hebben zo goed als geen bruikbare documentatie.
Je hebt niet echt vaak met die paketten gewerkt geloof ik. GCC compatible? WTH is dat? VS97, wat is dat? Mingw is GCC.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
BCC schreef op donderdag 28 april 2005 @ 01:10:

- Gebruik geen Visual Studio 2003, want ze geven zelf al aan dat je voor C++ VS 97 moet hebben, waardoor je weer met een oude compiler zit
"Ze"? VS2003 werkt perfect met C++. Ja, ik kan er fouten in vinden, maar dat is omdat het deel van m'n werk is. Ik heb fouten gevonden in ongeveer elke compiler waar ik mee heb gewerkt. Er is geen enkele reden meer om ooit nog VS 97 (VC5.0) te gebruiken.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09:55

.oisyn

Moderator Devschuur®

Demotivational Speaker

BCC schreef op donderdag 28 april 2005 @ 01:10:
Voor de mensen die nog geïnteresseerd zijn:

- Gebruik geen Borland Builder 6, want die hebben een eigen (ouderwetse) compiler, die in iedergeval niet GCC compatible is.
- Gebruik geen Visual Studio 2003, want ze geven zelf al aan dat je voor C++ VS 97 moet hebben, waardoor je weer met een oude compiler zit
- Gebruik geen CygWin/MingW. Deze hebben zo goed als geen bruikbare documentatie.
Leer gewoon hoe standaard C++ werkt. GCC is allesbehalve standaard, hoewel hij de standaard zelf voor het grote gedeelte wel slikt (maar met extra extensies die in standaard C++ niet mogen), en daarom prima te gebruiken is. VC++ 5.0 (die bedoel je met VS97) is een baggercompiler. BCB6 en VS 2003 zijn gewoon prima compilers.

En MingW zit dus gewoon bij Dev-C++, dus je spreekt jezelf tegen :Y)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 07-05 15:31

BoAC

Memento mori

BCC schreef op donderdag 28 april 2005 @ 01:10:
Voor de mensen die nog geïnteresseerd zijn:

..
- Gebruik geen CygWin/MingW. Deze hebben zo goed als geen bruikbare documentatie.
Dat vind ik wel heel kort door de bocht. Hier al gekeken? http://www.cygwin.com/
Gebruik Dev-C++ Versie 5 (BETA). http://www.bloodshed.net/dev/devcpp.html
Installeren en klaar!
Fijn toch success... ;)

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 11:25
.oisyn schreef op donderdag 28 april 2005 @ 10:02:
[...]


Leer gewoon hoe standaard C++ werkt. GCC is allesbehalve standaard, hoewel hij de standaard zelf voor het grote gedeelte wel slikt (maar met extra extensies die in standaard C++ niet mogen), en daarom prima te gebruiken is. VC++ 5.0 (die bedoel je met VS97) is een baggercompiler. BCB6 en VS 2003 zijn gewoon prima compilers.

En MingW zit dus gewoon bij Dev-C++, dus je spreekt jezelf tegen :Y)
Volgens mij gebruik je bij Linux anders altijd GNU GCC toch? En ik weet ook wel dat MingW in Dev-C++ zit, maar devcpp is een onzettend stuk bruikbaarder, netter en beter gedocumenteerd dan MingW. Dit is de hele installatie documentatie: http://visual-mingw.sourceforge.net/doc/vmingw/index.htm Rept geen woord over het installeren van de compiler. Komt die zomaar uti de lucht vallen :)?

[ Voor 13% gewijzigd door BCC op 28-04-2005 10:40 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 11:25
BoAC schreef op donderdag 28 april 2005 @ 10:03:
[...]

Dat vind ik wel heel kort door de bocht. Hier al gekeken? http://www.cygwin.com/
Fijn toch success... ;)
Ja, uiteraard.. Maar CygWin is toch niet expliciet bedoeld om dingen te compilen? Meer als een soort Linux/Windows Wrapper?

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09:55

.oisyn

Moderator Devschuur®

Demotivational Speaker

BCC schreef op donderdag 28 april 2005 @ 10:37:
[...]

Volgens mij gebruik je bij Linux anders altijd GNU GCC toch?
Helemaal niet, maar wat probeer je daarmee te zeggen? Dat het daarom standaard C++ is? :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 11:25
.oisyn schreef op donderdag 28 april 2005 @ 10:56:
[...]
Helemaal niet, maar wat probeer je daarmee te zeggen? Dat het daarom standaard C++ is? :)
Nee, dat het vaak gebruikt wordt. Maar mijn projectgenoot developt op de MAC.. dus ik zit nogal vast aan GCC..

Maar zoals ik al zei weet ik nog niet zoveel van C++. Ik heb 5 jaar lang voornamelijk Java en C# gedaan op de UT en ik begin nu net met C++. Wat ik gedaan heb was allemaal met GNU/GCC op Linux bakken. Ik had niet echt verwacht dat er zo grote verschillen in de verschillende compilers zou zitten, en dat het zo ingewikkeld zou zijn om GCC op Windows te draaien...

[ Voor 37% gewijzigd door BCC op 28-04-2005 11:10 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • mindcrash
  • Registratie: April 2002
  • Laatst online: 22-11-2019

mindcrash

Rebellious Monkey

Hoezo GCC niet kunnen draaien op het Microsoft platform zonder Cygwin/WSU? Sinds jaar en dag bestaat er zoiets als DJGPP, een directe port van GCC voor DOS/Windows. ;)

"The people who are crazy enough to think they could change the world, are the ones who do." -- Steve Jobs (1955-2011) , Aaron Swartz (1986-2013)


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09:55

.oisyn

Moderator Devschuur®

Demotivational Speaker

Voor DOS ja, sinds windows xp zijn er problemen met djgpp door een bug in de vx86 kernel van windows. Of zijn die inmiddels al opgelost? De main target is iig DOS, niet windows.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 10:04
mindcrash schreef op donderdag 28 april 2005 @ 11:36:
Sinds jaar en dag bestaat er zoiets als DJGPP, een directe port van GCC voor DOS/Windows. ;)
DJGPP is a complete 32-bit C/C++ development system for Intel 80386 (and higher) PCs running DOS.
:)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09:55

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het probleem met GCC onder windows is dan ook niet zozeer het aan de praat krijgen van gcc zelf; dat is een kwestie van de source downloaden en compilen met je favo compiler (wellicht nog hier en daar wat aanpassingen doen zodat het aan de standaard conformt). Het zit 'm juist in de standaard library, en dat is wat cygwin, mingw en djgpp je leveren. Djgpp is dan voor dos, en cygwin is in feite een linux shell waar je app onder draait. Blijft mingw over :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 11:25
Tja.. als je het weet is het makkelijk :)

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.

Pagina: 1