Toon posts:

[VC++6] Lib static meenemen in een Lib.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben dus zelf een OpenGL libje aan het maken waarin ik ook jpeg
functionaliteiten in wil gebruiken. Hiervoor gebruik ik het welbekende jpeglib...

Mijn myOpengl.lib maakt dus gebruik van jpeglib.lib en dit gaat allemaal goed.

Als ik nu in mijn uiteindelijke applicatie mijn OpenGL lib ga gebruiken geeft hij linker errors
en moet ik die jpeglib ook meelinken.

Dit wil ik dus niet. Ik wil dat die JpegLib binnen mijn OpenGL.lib zit en dat ik verder niets meer
hoef mee te linken. Is dat mogelijk?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 22:51

curry684

left part of the evil twins

Nee, en dat is logisch. Een static lib bevat alleen de functies die hij zelf aanbiedt, en is alleen gecompileerd, net als iedere andere object-file uit je project. Pas in de linker-stage worden alle stubs aan elkaar gelinkt op signature, en op dat moment heb je dus idd de lib nodig.

In theorie is het wel mogelijk, maar bijv. MSVC weigert het omdat je anders enorm in de problemen komt bij ruitjes. Stel dat je ook een DirectX layer hebt, en die noem je myDirectX.lib naast je bestaande myOpenGL.lib, waarbij beiden JpegLib gebruiken. Als je dan een applicatie bouwt die beide libs gebruikt zou je dus JpegLib 2 keer meelinken binnen dezelfde executable, waardoor de linker errors of warnings zal geven op duplicates, en je zelfs corrupte executables kunt bouwen als beide libs tegen verschillende versies van JpegLib zijn gelinkt.

Professionele website nodig?


Verwijderd

Topicstarter
Bedankt voor het antwoord en de duidelijke uitleg. _/-\o_
Jammer dat het inderdaad niet mogelijk is, maar het is wel begrijpelijk B)
Appart meelinken dan maar :|

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

curry: is dat wel zo? Je linkt sowieso niet tegen libs, je voegt hem alleen maar toe aan de symbol database. Een #pragma comment (lib) in beide libraries zal bijvoorbeeld niet tot problemen gaan leiden. Of begrijp ik nu niet helemaal wat je bedoelt?

[ Voor 11% gewijzigd door .oisyn op 20-01-2006 14:24 ]

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.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 22:51

curry684

left part of the evil twins

.oisyn schreef op vrijdag 20 januari 2006 @ 14:24:
curry: is dat wel zo? Je linkt sowieso niet tegen libs, je voegt hem alleen maar toe aan de symbol database. Een #pragma comment (lib) in beide libraries zal bijvoorbeeld niet tot problemen gaan leiden. Of begrijp ik nu niet helemaal wat je bedoelt?
Volgens mij begrijp ik jou nu niet :P Laatste keer dat ik een C++ project afleverde was het wel handig als je de lib meelinkte, anders zit je een beetje met unresolved external function calls en zo.

Met #pragma comment (lib) plaats je enkel een hint aan de linker in de lib. Omdat de linker pas komt kijken zodra je de executable of dll zelf feitelijk bouwt zal dit inderdaad geen problemen geven gok ik zo als hij realistisch kan detecteren dat je 2 keer dezelfde file aanvraagt (zou wel erg stupide zijn als ie dat niet zou herkennen overigens).

[ Voor 9% gewijzigd door curry684 op 20-01-2006 14:44 ]

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wat bedoelde jij dan? De jpeg lib mergen met zowel die opengl lib als de directx lib?

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.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 22:51

curry684

left part of the evil twins

.oisyn schreef op vrijdag 20 januari 2006 @ 14:57:
Wat bedoelde jij dan? De jpeg lib mergen met zowel die opengl lib als de directx lib?
Hij impliceert in z'n originele post dat ie het vreemd vond dat ie in foobar.exe zowel opengl.lib als jpeg.lib moest meelinken, hij had de merge verwacht. Ik zeg dat je in dat geval dus duplicate symbols krijgt en ie daarom juist niet merget :)

Volgens mij zeggen we hetzelfde :P

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ah right, op die fiets :)

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.

Pagina: 1