PDA

Visualizza la versione completa : [C++] includere dll nell'eseguibile


miki1984
26-10-2004, 00:29
ciao ragazzi, ho un problema con cbuilder.

ho creato il mio programmino che funziona correttamente. il problema è che, se lo trasferisco sull'altro computer su cui non c'è installato cbuilder, non funziona più perchè va a cercare delle dll proprie di cbuilder.

come devo fare perchè il compilatore, quando genera l'eseguibile, includa in esso anche il codice delle librerie, in modo tale che il programma funzioni anche senza aver installato cbuilder?

ho cercato fra le opzioni di compilazione ma non ho trovato ciò che cercavo.

help me, please.

grazie.

Kreator
26-10-2004, 08:54
Allora ci sono due modi.
La compilazione statica e la compilazione dinamica.
Nella compilazione statica tutte le importazioni che il .exe vuole le include dentro il suo file eseguibile e quindi il file lo puoi portare dove vuoi senza problemi di stare a importare le dll del C++ Builder .. ovviamente l'inconveniente e' che le dimensionioni dell'eseguibile sono + grandi del secondo metodo (compilazione dinamica).

Il secondo metodo che e' quello che interessa a te devi fare così.
C'e' un programmino del cbuilder chiamato "tdump.exe".
Scendi a linea di comando "cmd" e ti rechi nella cartella dove hai il tuo progetto.
A quel punto scrivi "tdump <nome programma.exe> > <nome file.txt>"
Il Tdump e' un programma il quale ti serve per vedere il tuo file eseguibile le importazioni delle librerire che deve fare.
In quella maniera ridirigi tutte le importazioni che devi fare sul file nome file.txt in maniera tale che ti risulta + leggibile.
A quel punto apri il file in formato txt e devi guardare tutte le righe con scritto: "Imports from <nome libreria>".
Ecco, quei file indicati, li devi esportarli assieme al programma ovunque tu vuoi e vedrai che in quella maniera ti funziona.

:ciauz:

Kreator
26-10-2004, 08:59
ah, dimenticavo.

Per usare la compilazione dinamica, devi ricordarti di avere spuntate le queste due box in Project->Options:

1. Finestra LINKER: Use dynamic RTL
2. Finestra PACKAGES: Build with run-time packages

Ovviamente nella compilazione statica devi ricordarti di eliminare la spuntatura su entrambe.

Buon divertimento.

:ciauz:

MMarzia
26-10-2004, 09:01
Originariamente inviato da miki1984
ciao ragazzi, ho un problema con cbuilder. la prossima volta ricorda di specificare il linguaggio nel titolo..

Loading