Newsgroup: it.comp.lang.visual-basic
Titolo: utilizzo di DLL

Buongiorno a tutti!
Ho creato una DLL in C++ ed ora vorrei poterla utilizzare con Visual 
Basic, ma non ho la più pallida idea di come fare.
So che dovrei utilizzare lo stesso metodo che si usa per le API di 
Windows, ma non essendo pratico neanche di questo metodo, non so dove 
sbattere la testa.
La sintassi che uso è più o meno questa:
Public Declare square Lib "[PATH]+"\miadll.dll" (lato as integer) as integer
dove ovviamente [PATH] è il percorso di dove sta la DLL, lato è il 
parametro che vuole la funzione, square è il nome della funzione e 
restituisce un intero.
Mi sembra tutto giusto, ma sicuramente è il ragionamento che è 
sbagliato, perchè mi dice che non trova nessun punto d'accesso (o 
qualcosa di simile).
Siccome è un argomento che ne "comprende" due (VB e C++) sto cercando 
risposte (per l'argomento attinente) nel NG sulla programmazione WIN32, 
ma intanto volevo sapere se almeno questa parte è giusta.
Grazie a chiunque mi risponda e buon lavoro a tutti!

Sicuro di averla registrata correttamente?!
Puoi provare ad aggiungerla nei riferimenti e poi fai la dichiarazione
Ciao, Vincenzo

 Ciao, Vincenzo

"Marg"  ha scritto:

Solo ActiveX.
Le DLL vanno riferite come le api di sistema.
Esempio di riferimento a DLL fatto in C++:
Public Declare Function NomeFunzione Lib "nomeDLL.dll" Alias
"_NomeFunzioneDecorata@4" (ByVal variabileLong As Long) As Long
dove NomeFunzioneDecorata dipende da come realmente è stata chiamata la
funzione dal compilatore C++.
Nel mio caso avendo un solo parametro long (4 byte) risulta il nome decorata
da @4.
<x:termoPilucco>, Bzzzzz

 Le DLL vanno riferite come le api di sistema.
appunto, mi pareva
ciaociao

 Basic, ma non ho la più pallida idea di come fare.
Prova a postare la dichiarazione esatta, sia C che VB
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 qualcosa di simile).
Caro RAPPERZ io a mio tempo ti postai un prototipo di dichiarazione di 
una funzione in C/C++ da richiamare da VB e visto che ci siamo te la 
ri-posto:
__declspec (dllexport) signed short int __stdcall miafunzione (signed 
short int parametro)
{
   return parametro+1;
};
e da VB:
declare function miafunzione lib "percorso/della/tua/dll" (ByVal 
Variabile as Integer) as Integer
E se provi a fare
Private Sub Form_Load()
   Me.Caption=miafunzione(5)
End Sub
noterai che Caption varrà 6
-- 
Nella vita una sola cosa è certa: se la storia ci ha insegnato qualcosa, 
è che si può uccidere chiunque.
(Michael Corleone)
Posted from X-Privat Free NNTP server - 
www.x-privat.org

 };
...e la funzione di entrata?
Non vuole essere assolutamente una critica (anzi, grazie per l'aiuto), 
ma ci ho messo due giorni a capire che dovevo aggiungerci tutta la 
pappardella per la funzione d'ingresso, altrimenti non fungeva un tubo!!! :)
...perchè siamo sicuri che la funzione d'ingresso sia necessaria, 
vero?... :o (dubbio)


 ...e la funzione di entrata?
Non è la FUNZIONE DI INGRESSO... cioè la DLL non necessita di una main 
come un semplice software, ma il PUNTO DI INGRESSO.
Praticamente se compili la DLL per essere richiamata da VB devi 
dichiarare in un certo modo le funzioni che andrai a richiamare, 
altrimenti VB (o chi al posto suo) non riuscirà a capire da che parte 
comincia il codice di ogni funzione.
Invece con __declspec e compagnia bella la funzione viene compilata in 
un modo più alla portata di VB.
Almeno questo è ciò che ho capito io durante le mie prove.
