[vc++] dubbele definitie met linken

Pagina: 1
Acties:

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
Ik heb een lib noemen we ff 'x.lib'. In deze 'x.lib' staat oa een main(), maar hier staan ook functies in die ik in een programma 'A' wil gebruiken.
Dus 'A' linkt 'x.lib' mee. 'A' bevat ook een main(). Dit gaat goed geen errors.

Ik heb programma 'B' geschreven ('A' en 'x.lib' heeft iemand anders geschreven die nu niet meer is...) deze heeft ook een main en heeft ook lib 'x.lib' nodig. Als ik deze meelink krijg ik:
Error 9 error LNK2005: _main already defined in b.obj (file: x.lib)
Hoe kan dit, ik wil nml wel de functies gebruiken maar die main niet.

if broken it is, fix it you should


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:52

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je bedoelt een dubbele definitie, geen dubbele declaratie, want dat laatste mag en is voor de linker niet interessant ;)

En het punt is dat libraries met hele object files werken, niet met losse functies. Als jij een functie gebruikt die in een object file staat waar ook een main in zit, dan krijg je die main ook gratis mee. Basically, you're screwed :). Je zou evt. een niet-console app kunnen maken zodat je WinMain kunt gebruiken. Of je moet die lib hacken zodat main niet meer conflicteert.

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.


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
.oisyn schreef op vrijdag 09 februari 2007 @ 13:42:
Je bedoelt een dubbele definitie, geen dubbele declaratie, want dat laatste mag en is voor de linker niet interessant ;)

En het punt is dat libraries met hele object files werken, niet met losse functies. Als jij een functie gebruikt die in een object file staat waar ook een main in zit, dan krijg je die main ook gratis mee. Basically, you're screwed :). Je zou evt. een niet-console app kunnen maken zodat je WinMain kunt gebruiken. Of je moet die lib hacken zodat main niet meer conflicteert.
ja de oplossing /force wekrt prima, maar is een beetje goedkoop....

Hoe kan het dat app 'A' het niet heeft en 'B' wel?

if broken it is, fix it you should


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:52

.oisyn

Moderator Devschuur®

Demotivational Speaker

Omdat app 'A' toevallig niet een functie gebruikt die in hetzelfde object file als main zit?

[ Voor 18% gewijzigd door .oisyn op 09-02-2007 14:21 ]

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.


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
.oisyn schreef op vrijdag 09 februari 2007 @ 14:20:
Omdat app 'A' toevallig niet een functie gebruikt die in hetzelfde object file als main zit?
ja, das wel heel toevallig, maar goed het zij zo...

if broken it is, fix it you should