Salve, spero di esprimermi nel modo più chiaro ed esaustivo possibile.
Mi sono cimentato nella programmazione in VB6 di una applicazione EXE che sfruttasse il codice contenuto in delle librerie DLL da me create.
La creazione delle DLL (non Activex) l'ho effettuata modificando il compilatore di Visual Basic nel modo decritto in alcuni articoli presenti su internet in merito all'argomento. La creazione va a buon fine e l'utilizzo delle mie librerie è perfetto nella modalità debug, ossia ad applicazione non compilata. Nel momento in cui invece compilo l'applicazione, nelle operazioni che utilizzano le librerie, essa si blocca ed esce la schermata classica del problema:
"Si è verificato un errore in ... . L'applicazione verrà chiusa. Inviare?".![]()
Le funzioni incluse nella DLL utilizzano degli input double e variant, mentre come output hanno delle matrici di variabili type da me definite. Questi output li passo alle funzioni come argomenti della funzione ma in "Byref", mentre il valore della funzione è booleano e mi riporta esclusivamente l'esito della operazione:
Public Declare Function TraRettilineo Lib "Geometria.dll" (ByVal Lunghezza As Double, ByVal Passo As Double, ByRef MaTemp() As Coord) As Boolean
Public Type Coord
s As Double
x As Double
y As Double
z As Double
t As Double
End Type
La dichiarazione del type chiaramente l'ho effettuata sia nel progetto della DLL che in quello dell'applicazione; ribadisco che il sistema funziona perfettamente in modalità debug.
Il dubbio che mi sopraggiunge è questo, è possibile che la memoria destinata a questo scopo a programma compilato sia minore che nella fase di debug, o che sopraggiunga qualche limitazione intrinseca a me ignota??![]()
Sono costretto a caricare il codice delle DLL come moduli BAS perdendo così la possibilità di "nascondere" il codice anche ad applicazione non compilata?![]()
Spero di essermi espresso chiaramente.
Ringrazio chiunque voglia rispondermi.
Michele