Newsgroup: it.comp.lang.visual-basic
Titolo: DLL, Visual C e VB

Ciao a tutti,
premesso che di Visual C++ non ne capisco niente (e in VB non sono un
esperto),
come faccio (se si puo') a chiamare una DLL scritta per Visual C++ da VB6?
La DLL comunica con una scheda hardware esterna sulla seriale.
Ho anche il sorgente della DLL;
Per favore aiutatemi, e' imporatnte.
Grazie

Ho anche il sorgente della DLL;
Se le funzioni da chiamare adottano la convenzione di chiamata WINAPI (o __stdcall)
le dichiari in un modulo con l' istruzione Declare.
Se, invece, sono adottate altre convenzioni allora devi impacchettare le funzioni
che ti interessano in wrapper WINAPI.
-- 
hth, hal

 writes:
h> Se  le funzioni  da chiamare  adottano la  convenzione  di chiamata
h> WINAPI (o  __stdcall) le  dichiari in un  modulo con  l' istruzione
h> Declare.
Curiosita` (e  poca voglia di sperimentare): per  la "decorazione" del
nome se la sbriga VB ?
-- 
Gian  | main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Uberto|                        David Korn, 1987 ioccc best one liner 
Lauri |-------------------------------------------------------------------
(aka saint) >>Vedere X-Nospam nell'header - See X-Nospam field in Header<<

nome se la sbriga VB ?
Si risolve con un .def.
-- 
ciao, hal

 Si risolve con un .def.
#define VB_CALL extern "C" __declspec(dllexport)
VB_CALL int WINAPI MyFunc([params])
e i nomi non vengono decorati
Ciao
------------------------- SiDB Simple DataBase engine ----
------------------------- adParser Expression evaluator --
 
http://space.virgilio.it/zntf...@tin.it/
----------------------------------------------------------

e i nomi non vengono decorati
Grazie mille, non ci avevo pensato ;-)
-- 
ciao, hal

> nome se la sbriga VB ?
h> Si risolve con un .def.
Grazie, per il  VB vale quello che vale per  altri linguaggi. Avevo il
dubbio che VB ci pensasse da solo.


 dubbio che VB ci pensasse da solo.
Purtroppo vb fa in automatico solo le cose inutili :P
-- 
ciao, hal

 ha scritto nel messaggio
news:9vq575$h32de$1...@ID-56381.news.dfncis.de...

No, come tutti i prodotti M$ fa in automatico quelli che vorresti gestire
tu, e viceversa.
Ciao

tu, e viceversa.
LOL

 Purtroppo vb fa in automatico solo le cose inutili :P
Una precisazione. Dato che la decorazione dei nomi nel C++ è dipendente
dall'implementazione del compilatore, VB avrebbe potuto gestire
automaticamente la rimozione della decorazione (che serve per
l'overloading) solo per dll compilate con VC++, e con certe particolari
versioni di VC++, perché non è detto che il modo di decorare i nomi
rimanga sempre lo stesso (lo hanno cambiato in passato tra VC++ 2.0 ed
il successivo).
Questo avrebbe quindi creato notevoli problemi in caso di
(ri)compilazione delle dll utilizzate con un altro compilatore (ed
eventualmente anche con un'altra versione di VC++).
Per cui la scelta senz'altro migliore è quella che è stata presa, ovvero
che sia possibile utilizzare dal VB solo funzioni con linkage C (extern
"C"), come d'altra parte si può fare in qualunque altro linguaggio.
Ciao.

 writes:
GUL> Grazie, per il  VB vale quello che vale per  altri linguaggi. Avevo il
GUL> dubbio che VB ci pensasse da solo.
Pirla, ci avevi anche lavorato sopra anni fa :)


Pirla, ci avevi anche lavorato sopra anni fa :)
LOL
Fossi in te, quello li' lo plonkerei :D