Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C++] Esportazione funzioni DLL

    Ciao a tutti ,

    ho bisogno di creare una dll (NON MFC)in c++ che esporti delle funzioni di una classe.

    Se possibile vorrei evitare l'utilizzo del file .DEF

    Sulla rete la documentazione è un pò confusa, sapete aiutarmi?
    Vuoi sbattezzarti? Guarda QUI

  2. #2
    Vai con l'up!
    Vuoi sbattezzarti? Guarda QUI

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305
    se usi il compilatore vc6 o NET crea un progetto per una dll NON MFC
    nelle opzioni del compilatore di default avrai che compilando il progetto ti creerà per esmpio tua.dll e tua.lib se usi.

    Usando queste opzioni devi portare nella dir dell'exe la dll e la lib che hai creato.

    avrai anche tua.cpp e tua.h

    Se hai fatto questa scelta sopra, nel progetto devi mettere anche un file che si chiama per esmpio tua.def lo crei con il notepad e lometti nel progetto. Nel file.def ci devi scrivere questo:

    LIBRARY tua
    EXPORTS

    perchè stai usando una dll dinamca e la sua lib quindi in questo caso la dll deve sapere le funzioni che esporterai.

    se nelle opzioni del compilatore scegli l'opzione Static Library allora non ti serve + avere il file.def perchè il tutto è compreso nell'unico file che ti verrà creato che si chiama tua.lib infatti avrà dimensioni maggiori.

    Dunque se opti per la dll + la lib nel file.def (che sarebbe tua.def che hai creato) devi mettere la funzione da esportare.
    esempio:

    LIBRARY tua
    EXPORTS
    Inizializzazione

    ora nel file tua.h immetti la funzione da esportare che è:
    extern "C" void __declspec (dllexport) Inizializzazione();

    magari ti fai ritornare un tru o false con questa:

    extern "C" bool __declspec (dllexport) RitornaFlag();

    Nel file .cpp ci metti le funzioni così:

    Inizializzazione()
    {
    ...fai l'inizializzazione
    }

    bool RitornaFlag()
    {

    return false;
    }


    Nel progetto dell'exe che richiama la dll e la lib oppure (come sopra) solo la lib perchè hai scelto la Static Library, in un file.h globale o nel cpp pricipale (il main) metti le stesse righe delle funzioni da esportare ovvero i prototipi.
    esempio ci incolli le stesse righe così:

    extern "C" void __declspec (dllexport) Inizializzazione();
    extern "C" bool __declspec (dllexport) RitornaFlag();

    Nel progetto che richiama la dll + la lib o solo la lib, nelle opzioni del compilatore devi includere tua.lib (se non funziona nulla)
    e come detto prima tua.lib e tua.dell o solo tua.lib deve stare nella dir del progetto dell'exe.

    dal mai del progetto per richiamare la funzione basta che metti la sua chiamata:
    esempio:

    Inizializzazione();

    oppure

    if(RitornaFlag())//valore del flag di stato
    a=2;
    else
    a=3:

    -------------------------

    ora che lo rileggo mi sembra quasi un tut?



    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.