Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: MinGW - dll-tiedostojen yhdistäminen yhdeksi dll-tiedostoksi

sipex [01.06.2008 19:15:19]

#

Olen kääntänyt ohjelman, johon on linkitetty useita dll-tiedostoja.

Käännöskomento, jolla syntyy yksi dll-tiedosto liitettäväksi toiseen osaan ohjelmaa:
g++ -o koottukirjasto.dll -shared omakoodi.o -L. -lkirjasto1 -lkirjasto2

Kuitenkin kun käännän koko ohjelman komennolla:
g++ -o ohjelma -shared ohjelma.o -L . -lkoottukirjasto

niin ohjelma kääntyy ja linkittyy ok mutta ohjelma vaatii ajonaikana toimiakseen tuon koottukirjasto.dll - tiedoston lisäksi MYÖS alkuperäiset kirjasto1.dll ja kirjasto2.dll.

Miten saisin koottukirjasto.dll:n käännettyä siten, että se ei riippuisi noista alkuperäisistä tiedostoista ja ajonaikana riittäisi vain tuo yksi dll-tiedosto?

Mazzimo [01.06.2008 21:04:07]

#

Totta kai se vaatii myös aikaisemmat dll:t. Ne on vain linkitetty luomaasi dll-tiedostoon. Jos haluat päästä alkuperäisistä dll-kirjastoista "eroon", tulee sinun linkittää ne omaan dll-kirjastoosi staattisina kirjastoina.

Alkuperäisistä kirjastoista kuitenkin on vain harvoin staattisesti linkitettäviä käännöksia, joten joudut todennäköisesti kääntämään kirjastot uudestaan sorsista (oletan, että kyseessä on OpenSource). Näissä on yleensä tehty mahdolliseksi staattisesti linkittyvän kirjaston kääntäminen (#define _STATIC_LIB tjsp.).

sipex [02.06.2008 12:24:16]

#

Noita valmiina tulleita dll-tiedostoja ei siis voi kääntää staattisesti omaan käännökseen?

Mistä tunnistan alkuperäisestä paketista staattisesti linkitettävän käännöksen jos siellä vaikka sellainen olisi?
Erilainen tiedostopääte?

Mazzimo [02.06.2008 21:55:24]

#

Jos paketti sisältää .lib -tiedostoja, niin staattinen käännös on REILUSTI dynaamista isompi (.lib -tiedosto voi olla useita, jopa kymmeniä megoja suuri).

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta