Archief - dll exports en functie adressen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Zakman

Legacy Member
Beste 9livers,

Ik ben (als persoonlijke leerervaring) libogg en libvorbis aan het implementeren vie Qt's qmake. Ik ben dus stuk voor stuk de vcproj bestanden aan het omzetten naar platform-onafhankelijke qmake pro bestanden. Ik moet zeggen dat het vrij aardig lijkt te lukken voorlopig.
Toch is er iets dat mij zorgen baart: als ik dumpbin /exports doe op de officiële libogg.dll, dan krijgen de functies andere adreswaarden (of entrypoints, zoals dat heet denk ik) dan in mijn libogg.dll. Kan dit voor problemen zorgen bij bv het compileren van libvorbis met die library of is het enkel een issue als ik een ogg.dll geleverd bij een ander programma probeer te vervangen door mijn eigen versie?
PS: mijn eigen libogg geeft trouwens ook alle 64 export functies zoals de originele libogg. Daar zit het probleem dus niet :)
Hartelijk bedankt!

rubenvb

Legacy Member
Kleine vermelding: zakman is mijn broer en ik heb per ongeluk via zijn login gepost :)
Bedankt voor het antwoord, maar ik wil in geen geval low-level die functies aanroepen via adreswaarden. Ik wil wel zeker weten dat als ik de ogg.h include die bij de ogg source zit, moet ik normaal gezien (als ik de ogg library dynamisch, dus via de dll, link) alle functies moeten kunnen oproepen die in die library zitten voorgecompileerd. Ik vroeg me af of het minieme verschil (nl die functie adreswaarden) een verschil maakten op linker niveau. Vooor de volledigheid ga ik de twee dumpbin /exports eens laten zien en aanduiden wat mij zorgen baart (enkel een klein stukje wegens nogal grote output):
de mijne (via qmake)
Code:
  Section contains the following exports for ogg.dll

    00000000 characteristics
    4AE9FE17 time date stamp Thu Oct 29 21:41:59 2009
        0.00 version
           1 ordinal base
          64 number of functions
          64 number of names

    ordinal hint RVA      name

          1    0 00002DF0 ogg_packet_clear
[...]
         60   3B 000018E0 oggpack_writealign
         61   3C 000010E0 oggpack_writeclear
         62   3D 00001A50 oggpack_writecopy
         63   3E 00001000 oggpack_writeinit
         64   3F 00001040 oggpack_writetrunc

  Summary

        1000 .data
        1000 .pdata
        2000 .rdata
        1000 .reloc
        1000 .rsrc
        3000 .text
de officiële
Code:
  Section contains the following exports for libogg.dll

    00000000 characteristics
    4AEB35FB time date stamp Fri Oct 30 19:52:43 2009
        0.00 version
           1 ordinal base
          64 number of functions
          64 number of names

    ordinal hint RVA      name

          1    0 00002E50 ogg_packet_clear
[...]
         60   3B 00001360 oggpack_writealign
         61   3C 00001540 oggpack_writeclear
         62   3D 000014E0 oggpack_writecopy
         63   3E 00001000 oggpack_writeinit
         64   3F 00001040 oggpack_writetrunc

  Summary

        3000 .data
        1000 .pdata
        3000 .rdata
        1000 .reloc
        1000 .rsrc
        8000 .text

Nu zijn er enkele verschillen in de rva waarden voor de verschillende functies. Ook in de summary zijn er verschillende waarden significant anders. Hebben deze twee dll's dezelfde functionaliteit? Geven beide dll's hetzelfde resulterend programma?

Merci!

rubenvb

Legacy Member
all right, awesome! Merci, daar hoopte ik al op. Heb juist mijn libogg en libvorbis in qmake .pro bestanden gestoken. Nu begint het grote werk, nl. libFLAC. Dan wordt mijn leven echt veel makkelijker: qmake && nmake release en voilà!
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan