Vai al contenuto
PLC Forum


Visual C++ 6.0 E Dll - Evitare di ricompilare tutti i programmi


aki

Messaggi consigliati

Salve a tutti

volevo sapere come fare a realizzare delle dll che, nel caso in cui vengano modificate perche' vi aggiungo dei nuovi metodi, non necessitano di dover ricompilare tutti i programmi che già le usano e che non sono assolutamente interessati alla modifica.

Spero di essere stato chiaro e di non aver fatto una domanda a cui già sono state date delle risposte; ho fatto una ricerca con google, ma senza nessun risultato, ho trovato solo degli articoli poco chiari su codeguru

Link al commento
Condividi su altri siti


Gianmario Pedrani

Non ho ben capito se tu sia in grado oppure no di realizzare delle dll? Le dll sono dei file contenente delle funzioni o procedure che vengono lincate dinamicamente alle tue applicazioni, e sufficente che le funzioni che andrai ad inserire e modificare non, mantengano lo stesso nome, e le vecchie procedure, in piu' puoi aggiungerci dei nuovi metodi ,in modo che i vecchi programmi possano sempre fare quello che facevano proma, mentre quelli nuovi possono sfruttare le nuove funzioni da te implementate.....

Per creare una dll credo che con google trovi vario materiale, io tanto tempo fa avevo trovato qualcosa.......

ciaooooooo

Link al commento
Condividi su altri siti

Salve aki,

Nella MSDN Library de Visual Studio 6.0 troverai sufficente documentazione per quanto riguarda

l'uso delle DLL.

Io non riesco a capire come puoi pretendere di andare avanti su questa strada, voglio dire assemblare

codice con Vc++ senza consultare la MSDN.

ho trovato solo degli articoli poco chiari su codeguru
Link al commento
Condividi su altri siti

Salve

io sono in grado di creare delle DLL in Visual C++ 6.0, il problema e' che, se vengono modificate, magari aggiungendo dei nuovi metodi, quasi sempre, poiche' viene modificato l'header file, si devono ricompilare tutti i programmi che le utilizzano, anche se non sono interessati alla modifica.

Per farmi capire meglio riporto un pezzo di untutorial suule DLL in Visual C(http://www.codeguru.com/Cpp/Cpp/cpp_mfc/tutorials/article.php/c4019/)

"Let's say you built a .DLL that exports a class called CMyClass. You provide a copy of the header file for CMyClass to be used by the client application. Suppose that a CMyClass object is 30 bytes in size.

Now let's suppose you modify the .DLL to change CMyClass. It still has the same public functions and member variables, but now CMyClass has an additional private member variable, an int. So now, when you create an object of type CMyClass, it's 34 bytes in size. You send this new .DLL to your users and tell them to replace the old .DLL. Now you have a problem. The client application is expecting a 30 byte object, but your new .DLL is creating a 34 byte object. The client application is going to get an error. "

Io volevo sapere se ci sono metodi semplici, senza dover creare deggli oggetti COM o DCOM per intenderci, che permettono di superare questo problema; in giro ci sono degli articoli ( su MSDN non ne ho trovato nessuno ) come quello precedentemente citato, ma sono un po' confusi.

Link al commento
Condividi su altri siti

Salve aki,

Dunque,

Explicit linking e' la via per accedere alle funzioni e dati contenuti in una DLL.

Le diverse APIs importeranno soltanto le functionalities che ne vogliono usare.

La DLL puo' venire aggiornata con nuove func. and data ma senza toccare le

altre che gia' stanno provedendo functionalities.

Bisogna anche fornire il file.def nel quale vengono mappati i diversi entry points per le APIs.

durante la compilazione.

L'ordine di questi indirizzi vengono sempre respetati come nome e posizione.

Il ricchiamo delle func. e data nelle APIs viene fatto tramite puntatori.

Vai a leggere nella MSDN su questo argomento e vedrai che riugirai a trovare la soluzione.

Saluto ;)

Link al commento
Condividi su altri siti

Salve

prima di tutto grazie per le ripetute risposte, il mio problema pero' e' di utilizzare delle DLL per esportare delle classi, il caricamento delle Lib con il successivo reperimento dell'indirizzo della funzione va' benissimo nel caso appunto di utilizzo di funzioni, credo che ci siano problemi nel caso di instanziamento di oggetti e di utilizzo dei relativi metodi.

Link al commento
Condividi su altri siti

Salve,

Dunque,

In il mondo del VC++ ci sono diversi vie per ricavare prestazioni dalle funzioni oppure data contenuta in

in una classe, struttura , activeX, com, etc.

Con il Explicit linking dovresti potere ricompilare un oggetto contenuto in una DLL che gia' sta fornendo

funzionalità ad altri APIs senza andare a modificare nulla su questi.

Niente .Lib , niente .H .

Hai gia' capito il file .def ?

Saluto.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...