DLL felhasználása

DLL felhasználása
2002-07-12T20:32:09+02:00
2002-07-14T20:48:33+02:00
2022-11-02T11:15:36+01:00
  • Azzal kezdenem, hogy nem ismerem C++ Buildert, de azt hiszem igy is tudok egy ket kerdesedre valaszolni. Azert kell .lib es .dll is, mert a Windows ugyan tamogat dinamikus libeket, de nincsen rendes dinamikus linkere (mint amilyen az ld.so jobb helyeken). Ennek tobb kellemetlen kovetkezmenye is van. Amikor win alatt meghivsz egy dll-ben talalhato fuggvenyt akkor igazabol egy kis warpert hivsz meg a lib-bol, ami kikeresi es elcache-eli az igazi fuggveny cimet (es meghivja a fuggvenyt). Ami roppant kenyelmetlen, hogy a dll es a foprogram nem hasznalhatja ugyanazt a header file-t, mert az import/export-ot manualisan kell megadni. Ezt a problemat normalis esetben egy jo ki #define varazslattal szokas athidalni. Itt kovetkezik az, hogy nem igazan ertem mit szerettel volna leirni. A szovegbol arra lehetne kovetkeztetni, hogy a C++ builder generalja a dll-ekhez a headert, amit azert nehezen hiszek. (El nem tudom kepzelni, hogy peldaul egy huzosabb osztalyhierarchiahoz hogyan generalna headert). Viszont az a "#define EXPIMP" pontosan arra jo, hogy az _alltalad_ megirt headert a dll es a foprogram is tudja hasznalni.
    Mutasd a teljes hozzászólást!
  • Ja, azt elfelejtettem mondani, hogy 5-ös Buildert használok...

    Bakter
    Mutasd a teljes hozzászólást!
  • Helló

    Most próbálkozok egy DLL-t megírni. A megírás még megy. A könyv amit használok: Programozzunk C++ Builder rendszerben. Ez azért fontos, mert nekem nem úgy hozza létre a dll forrásfájlt mint neki. Nekem nem csinál header fájlt. Mikor lefordítom még minden jó, a nézőkében megvan minden függvény. A szokásos konverziókat megcsinálom, hogy elérhető legyen kívülről: extern "C" __declspec(dllexport) __stdcall ... Amikor fel akarom használni, a könyv szerint be kell rakni a lib fájlt a projectbe. Ez megvan. Ő beincludolja a Headert és használja, de nekem nem hoz létre headert. Megpróbáltam beírni azt ami őneki van a header fájlban: #define EXPIMP extern "C" __declspec(dllimport) majd a függvény prototípusa: EXPIMP __stdcall int Proba(int a, int b); Amikor megpróbálom meghívni, azt mondja, hogí nem találja.
    Mit rontottam el? Meg ha belerakom a .LIB fájlt a projectbe akkoris kell bele a DLL, mert elméletileg akkor már bele is fordítja a kódot? Nem? Ha igen akkor hol a Dinamic Link Libary?

    Segítséget előre is köszi:
    Bakter
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd